[求岁数100%正确]
我不是高手
我的思想是这样的。你说他的3次方和4次方刚好有0~9组成。我就想到用数组和求余。一个数组用来对比。也就是我后面的b[10]。而a[10]就是存放我求余的数。当2个数组完全相等的时候就满足题目的条件了。我是用穷举法来算的。我写的不好。算法的时间复杂度大。可读性差。希望有高手帮我改的更好(衷心的希望)。但是我不想让那些灌水的人随便帮我改改。那样不如不改好(我要就不要做。要做就要做好。随便帮我谢谢有什么用呢。而且又不知道是不是正确的。我做的都上机验证的,力求准确。起码我不会误人。。。。。很多人在论坛上骂我狂傲。我的确是有点狂傲,这个我承认。但是灌水狂人那样随便说几句。或者乱写几句。对我来说不写和不说又有什么区别。我这个人就是我行我素。不怕人骂。我做的力求准确。朋友看我的帖子时候可以上机验证。而且每次的结果我都带抓图(这个可能这个论坛没几个人能做到吧,我既然做了版主就一定会尽我所能。帮助大家。要骂我的发e-mail来我邮箱ldm03@scse.com.cn)我用vc++.net写的。大家运行的时候也最好用vc++.net)(热情的贴子也是上机验证的。我这里吐血推荐各位朋友看看他的贴子。热情是我半个师傅呢)
#include<stdio.h>
#include<math.h>
main()
{ int x,i,j,n,a[10],k,temp,b[10];
for(n=0;n<10;n++)
b[n]=n;
for(x=12;x<50;x++)
{ if(pow(x,3)>999 && pow(x,4)<999999)
{
k=(int)pow(x,3); //强行转换
j=(int)pow(x,4);
n=0;
while(k>0)
{
a[n]=k%10; //放入数组a[]
k=k/10;
n=n+1;
}
while(j>0)
{
a[n]=j%10; //继续放入,注意我的n变化
j=j/10;
n=n+1;
}
if(n!=10) continue; //因为他说了刚好是0~9。所以数组要满足10个数
for(i=0;i<9;i++) //进行排序
{ j=i;
temp=a[i+1];
while(temp<a[j]&&j>-1)
{ a[j+1]=a[j];
j--;
}
a[j+1]=temp;
}
i=-1; //判断数组a[]里的数是不是0~9
n=0;
while(i<=9)
{ i++;
if(a[i]==b[i])
n++;
}
if(n==11)
{
printf("%d\n",x);
break;
}
}
}
}
要骂我的就回复骂吧。那样可有人会爽点。不用太麻烦。。。