2 条题解

  • 1
    @ 2023-8-2 22:03:32

    其实灰墙EASY~仅需要一步:pow😄

    #include<cstdio>
    #include<cmath>  //pow、fabs方法头文件
    using namespace std;
    
    int main(){
        int a, b;
        scanf("%d%d", &a, &b);
    
        long long x=pow(a, b);  //pow(a, b)=a^b(a的b次方)
        if(fabs(x)>1000000000) x = -1;  //fabs(x)=|x|
    
        printf("%lld\n", x);
    
        return 0;
    }
    
    • @ 2023-11-12 15:11:30

      方法二:快速幂

      快速幂 讲解:快速幂

      unsigned long long 类型 讲解:unsigned long long 类型

      #include<cstdio>
      using namespace std;
      
      int main(){
          freopen("pow.in", "r", stdin);
          freopen("pow.out", "w", stdout);
      
          int a, b;
          scanf("%d%d", &a, &b);
      
          unsigned long long x=1;
          while(b){
          	if(b%2) x *= a;
              a *= a;
              b /= 2;
      
              if(x > 1000000000){
                  x = -1;
                  break;
              }
          }
      
          //虽然 %llu(unsigned long long 类型数据) 只能输出非负数,但是 unsigned long long 变量中可以存储 负数,当 输出类型 为 %lld 时能够正常输出 -1
          printf("%lld\n", x);
      
          fclose(stdin);
          fclose(stdout);
      
          return 0;
      }
      
  • 0
    @ 2023-7-31 16:54:29

    这个题第七个点很坑人呢,是1,如果一直算1的次方是没有意义的,因此需要特判

    下面是代码

    #include<cstdio>
    using namespace std;
    long long int a,b;
    long long int chengji=1;
    int main()
    {
    	scanf("%lld%lld",&a,&b);
    	if (a==1)
    	{
    		printf("%d",1);
    		return 0;
    	}
    	for (int i=1;i<=b;i++)
    	{
    		chengji*=a;//进行乘法操作
    		if (chengji>1e09)
    		{
    			printf("%d",-1); 	
    			return 0;
    		}
    	}
    	printf("%lld",chengji);
    	return 0;
    }
    
    • 1

    信息

    ID
    1639
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    174
    已通过
    27
    上传者