复赛1:乘方

题目描述: [p8813]

数据范围:
b=1 10分,
b<=2 30分 a*a
b<=30, ab= <1018 结果超整数范围了。但在long long范围内 263
1=<a,b=<109 a=2, b=30时候230就大于109

代码实现:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/**************************************************************** 
 * Description: 2022_J_rematch_1
 * Author: Alex Li
 * Date: 2023-09-18 10:42:27
 * LastEditTime: 2023-10-09 18:26:18
****************************************************************/
#include <iostream>
using namespace std;

int main(){
    int a,b,c;
    cin>>a>>b;
     long long ans=1;//ans要大
    c=1000000000;
    for (int i =1; i <=b; i++){
        ans*=a;
        if(ans>c) {
            cout<<-1;
            return 0;
        }
    }
    cout<<ans;
}

直接用pow函数不行,报表,只得70分。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#include <iostream>
using namespace std;

int main(){
    int a,b,c;
    cin>>a>>b;
     long long ans=1;//ans要大
    c=1000000000;
  ans=pow(a,b);
    cout<<ans;
}
Scroll to Top