9 条题解

  • 16
    @ 2023-9-29 9:20:53

    来个非正解做法

    doubledouble 看似不能装下 (109)(109)(10^9)(10^9),但是 doubledouble 在装不下大数的时候会把自己变成 +inf+inf,此时为了方便处理溢出,此变量将大于所有除了 +inf+inf 的数,是不是很方便!

    powpow 的时间复杂度为 O(1)O(1),因此可以通过此题。

    𝐀𝐂代码

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int a, b;
        cin >> a >> b;
        double sum = pow(a, b);
        if (sum > 1e9)
            cout << "-1";
        else
            cout << int(sum);
        return 0;
    }
    
    • 3
      @ 2024-5-8 17:54:16

      AC代码

      #include <iostream>
      using namespace std;
      using ull = unsigned long long;
      ull ksm(ull a, ull n)
      {
      	ull res = 1;
      	while (n)
      	{
      		if (n % 2) res = res * a;
      		if (res > 1000000000)
      		{
      			cout << -1;
      			exit(0);
      		}
      		a = a * a;
      		n /= 2;
      	}
      	return res;
      }
      int main()
      {
      	ull a, b;
      	cin >> a >> b;
      	cout << ksm(a, b);
      	return 0;
      }
      
      • 2
        @ 2023-10-12 21:31:48

        简单!

        
        #include <bits/stdc++.h>
        using namespace std;
        int main()
        {
        int a, b;
        cin >> a >> b;
        double sum = pow(a,b);//乘方计算。
        if (sum > 1000000000)
        cout << "-1";
        else
        cout << int(sum);
        return 0;
        }
        
        • -2
          @ 2023-10-14 10:27:20

          使用快速幂,卡了我半天,终于做出来啦!!!

          #include<iostream>
          #include<cmath>
          using namespace std;
          const int MOD = 1e9 + 7;
          int main(){
              long long a, n, ans = 1;
          	cin>>a>>n;
          	while(n){
          	    if(n%2==1)
          	        ans=ans*a;
                  if(ans>int(pow(10,9))||ans<0){
                      cout<<-1;
                      return 0;
                  }
          	    n/=2;
          	    a=a*a;
          	}
          	cout<<ans;
              return 0;
          }
          
          • -3
            @ 2024-4-21 11:16:12
            #include<bits/stdc++.h>
            using namespace std;
            int main(){
                unsigned long long a,b;//题目给的是正整数,所以可以是unsigned long long
                cin >> a >> b;//输入a,b
                if(pow(a,b) > pow(10,9)) 
                {
                    cout << "-1";
                }
                else 
                {
                    cout << int(pow(a,b));
                }
                return 0;
            }
            
            • -3
              @ 2023-10-14 11:25:51
              #include <bits/stdc++.h>
              using namespace std;
              int main()
              {
                  int a,b;
                  cin>>a>>b;
                  if(a==1)
                  {
                      cout<<1;
                      return 0;
                  }
                  long long sum=1;
                  
                  for(int i=1;i<=b;i++)
                  {
                      sum=sum*a;
                      if(sum>1e9)
                      {
                          cout<<-1;
                          return 0;
                      }
                  }
                  cout<<sum;
                  return 0;
              }
              
              • -4
                @ 2024-4-18 17:21:24

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

                • -5
                  @ 2024-4-19 22:30:03
                  #include <iostream>
                  using namespace std;
                  
                  int main() {
                      long a, b;
                      cin >> a >> b;
                  
                      // 判断是否满足条件并计算结果
                      if (a <= 0 || b <= 0) {
                          cout << "-1\n";
                          return 0;
                      }
                  
                      long result = 1;
                      while (b > 0) {
                          if (result > 1e9 / a) {
                              cout << "-1\n";
                              return 0;
                          }
                          result *= a;
                          b--;
                      }
                  
                      cout << result << "\n";
                      return 0;
                  }
                  
                  • -24
                    @ 2023-9-26 19:54:40

                    阿西!没人做题解😕

                    • 1

                    信息

                    ID
                    2035
                    时间
                    1000ms
                    内存
                    256MiB
                    难度
                    8
                    标签
                    递交数
                    2188
                    已通过
                    343
                    上传者