zoukankan      html  css  js  c++  java
  • Codeforces Round #339 (Div. 2) A

    题意:就是输出在区间[l,r]中k的次方数,没有就输出-1.

    思路:开始用pow去计算次方,WA了两次估计是丢精度了,改成直接求次方就AC了.

      (pow慎用);

      题目还有一个坑点,就是long long的数据平方后会超出long long的范围从而导致数据溢出,新生成的数又刚好在l,r的范围里,这里有一个巧妙的处理方法

      

      

     1 #include<cstring>
     2 #include<cstdio>
     3 using namespace std;
     4 int main()
     5 {
     6     long long l,r,k;
     7     int ans=0;
     8     scanf("%lld%lld%lld",&l,&r,&k);
     9         long long c=1;
    10         while(c<=r){                    
    11         if(c>=l&&c<=r){
    12             if(ans==0)    printf("%lld",c);
    13             else    printf(" %lld",c);
    14             ans++;
    15         }
    16         if(r/c<k)    break;        //这里是判断c*k>r; 这里也就是题目数据坑点的解法,这样做是不会超出long long的范围的 
    17             c*=k;
    18         }
    19         if(!ans)    printf("-1
    ");
    20 }

       

  • 相关阅读:
    2.5 整数和算法
    斑马问题
    计算机硬件操作
    幸福是什么
    英译汉技巧
    指令
    计算机性能
    硬盘容量的计算方法
    Symmetric Tree
    Same Tree
  • 原文地址:https://www.cnblogs.com/sasuke-/p/5133615.html
Copyright © 2011-2022 走看看