4 条题解

  • 1
    @ 2025-4-29 13:51:01
    #include<bits/stdc++.h>
    using namespace std;
    int main() {
        long long a,b;
        cin>>a>>b;
        long long jieguo=1;
        bool m=false;
        if(a==1){
        	cout<<1;
        	return 0;
    	}
        for(long long i=0;i<b;++i) {
            jieguo*=a;
            if(jieguo>1000000000) {
                m=true;
                break;
            }
        }
        if(m){
            cout<<-1<<endl;
        }else{
            cout<<jieguo<<endl;
        }
        return 0;
    }
    • 1
      @ 2025-4-14 13:50:54
      #include <bits/stdc++.h>
      using namespace std;
      
      int main() {
      int a, b;
      cin >> a >> b;
      const long long MAX = 1000000000LL;
      long long result = 1;
      if (a == 1) {
      cout << "1" << endl;
      return 0;
      }
      
      for (int i = 0; i < b; ++i) {
      result *= a;
      if (result > MAX) {
      cout << "-1" << endl;
      return 0;
      }
      }
      
      cout << result << endl;
      return 0;
      }
      

      快速模式 回答完成 这段代码是一个简单的C++程序,用于计算a的b次方,并处理一些特殊情况。我来帮你分析一下:

      代码功能: 输入两个整数a和b 计算a的b次方 如果结果超过10亿(1e9),输出-1 特殊情况:当a=1时,直接输出1(因为1的任何次方都是1) 代码分析: 定义了一个常量MAX=1000000000(10亿) 如果a等于1,直接输出1并结束程序 使用for循环进行b次乘法运算 每次乘法后检查是否超过MAX,如果超过立即输出-1并结束 如果循环正常结束,输出计算结果 可能的改进: 可以添加对b=0情况的处理(任何数的0次方是1) 可以添加对a=0情况的处理(0的正数次方是0,0的0次方未定义) 可以添加对负数的处理(虽然题目可能限定了输入范围)

      • 0
        @ 2025-4-14 13:34:30
        #include <bits/stdc++.h>
        using namespace std;
        #define int long long
        double logN(double x, double n) {
            return log(x) / log(n);
        }
        signed main() {
        	ios::sync_with_stdio(false), cin.tie(0);
        	int a, b;
        	int sum = 1;
        	cin >> a >> b;
        	if (a == 1) return cout << 1, 0; // 判断a是不是一,如果是1,直接输出,否则BOOOOOOM!!!!!! 
        	if (logN(1000000000, a) < b) return cout << "-1", 0;// 反着的思路,若乘方 < log_a(1000000000)就行了 
        	else {
        		for (int i = 1; i <= b; i++) sum *= a;
        	}
        	cout << sum;
        	return 0;
        }
        • -4
          @ 2025-4-14 13:22:24

          #include <bits/stdc++.h> using namespace std; int n,m; long long sum=1; int main(){ cin>>n>>m; if(n==1) { cout<<"1"; return 0; } for(int i=1;i<=m;i++) { sum*=n; if(sum>1000000000) { cout<<"-1"; return 0; } } cout<<sum; return 0; }

          • 1

          信息

          ID
          969
          时间
          1000ms
          内存
          256MiB
          难度
          10
          标签
          (无)
          递交数
          795
          已通过
          21
          上传者