小文同學剛剛接觸了信息學競賽,有一天她遇到了這樣一個題:給定正整數 a a a 和 b b b,求 a b a^b ab 的值是多少。

a b a^b ab 即 b b b 個 a a a 相乘的值,例如 2 3 2^3 23 即為 3 3 3 個 2 2 2 相乘,結果為 2 × 2 × 2 = 8 2 \times 2 \times 2 = 8 2×2×2=8。
“簡單!”小文心想,同時很快就寫出了一份程序,可是測試時卻出現了錯誤。
小文很快意識到,她的程序里的變量都是int類型的。在大多數機器上,int類型能表示的大數為
2
31
?
1
2^{31} - 1
231?1,因此只要計算結果超過這個數,她的程序就會出現錯誤。
由于小文剛剛學會編程,她擔心使用int計算會出現問題。因此她希望你在
a
b
a^b
ab 的值超過
10
9
{10}^9
109 時,輸出一個-1進行警示,否則就輸出正確的
a
b
a^b
ab 的值。
這道題其實是一道單純的模擬題,也可以用快速冪來解(不過我不會)
我在考場上就是暴力循環,如果循環到ans大于 10 9 {10}^9 109 ,就跳出,不然就循環b次,然后輸出(不會超時)。
這道題還有個坑,如果a=1,b很大,就會超時(總所周知,1的幾次方都是1),所以還得特判一下。
下面就是代碼啦#includeusing namespace std;
long long n,m;
long long ans=1;
const int N=1e9;
int main(){//freopen("pow.in","r",stdin);
//freopen("pow.out","w",stdout);
cin>>n>>m;
if(n==1){//特判1
cout<<1;
return 0;
}
for(int i=1;i<=m;i++){ans*=n;
if(ans>N){//如果超出10^9,就輸出-1,然后退出
cout<<-1;
return 0;
}
}
cout<
你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
當前題目:[CSP-J2022]乘方題解-創新互聯
網頁鏈接:http://www.yijiale78.com/article0/docoio.html
成都網站建設公司_創新互聯,為您提供標簽優化、域名注冊、電子商務、虛擬主機、網站營銷、營銷型網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯