蓝桥杯 除去次方数 数组标记

来源:互联网 发布:mac上的抠图软件 编辑:程序博客网 时间:2024/05/21 11:37

自然数的平方数是:1 4 9 16 25 

自然数的立方数是:1 8 27 64 125 

自然数的4次方数是:1 16 81 256 

这些数字都可以称为次方数。

1~10000中,去掉所有的次方数,还剩下多少个数字?

 

参考答案:

9875


因为有很多不相同的数,但是他们的某个次方可能相同,比如2^4和4^2,所以不能遇到符合条件的就统计,我的方法是开一个10001的数组,给每一个数一个标记,假如计算出一个次方数,就将其标记一下,最后统计没有被标记的数,因为从平方开始,所以数值最大100,而2^14=16384,所以次方最大到14就行


#include<iostream>#include<cmath>using namespace std;int sum[10001]={0};int main(){long long i,j;for(i=1;i<=100;i++){for(j=2;j<=14;j++){if((int)pow(i,j)<=10000)sum[(int)pow(i,j)]=1;if(pow(i,j)>10000)break;}}j=0;for(i=1;i<=10000;i++){if(sum[i]==0)j++;}cout<<j;return 0;}


0 0