2 条题解

  • 0
    @ 2026-10-3 19:57:13

    CSP-J 2022 乘方 题解

    题目大意

    给定正整数 (a,b),计算 (a^b)。 若 (a^b ≤ 10^9),输出 (a^b);否则输出 -1。 数据范围:(1 ≤ a,b ≤ 10^9)。

    代码

    #include <bits/stdc++.h>
    using namespace std;
    int main () {
        int a, b;
        cin >> a >> b;
        if (pow(a, b) > 1e9) cout << -1;
        else printf("%.0lf", pow(a, b));
        return 0;
    }
    

    代码思路说明

    1. 读入两个整数 (a,b);
    2. 使用 pow() 函数计算 (a^b),pow 返回浮点数;
    3. 判断结果是否大于 (10^9):
      • 如果大于:输出 -1;
      • 如果不大于:用 printf("%.0lf") 将浮点数保留 0 位小数,输出整数结果。

    样例演示

    样例 1:输入 10 9 pow(10,9)=1000000000,不大于 (10^9),输出 1000000000。

    样例 2:输入 23333 66666 pow(23333,66666) 结果远大于 (10^9),输出 -1。

    • 0
      @ 2026-10-3 19:49:48
      
      #include<bits/stdc++.h>
      using namespace std;
      
      int a,b,sum = 1;
      int main(){
      	cin >> a >> b;
      	if(a == 1){
      		cout << 1;
      		return 0;
      	}
      	if(a == 0){
      		cout << 0;
      		return 0;
      	}
      	for(int i = 0 ; i < b ; i++){
      		if(sum > 1000000000/a){
      			cout << -1;
      			return 0;
      		}
      		sum *= a;
      	}
      	cout << sum;
      	return 0;
      }
      
      • 1

      信息

      ID
      609
      时间
      500ms
      内存
      128MiB
      难度
      入门
      标签
      递交数
      46
      通过
      11
      上传者