|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935-1936年应邀来中国清华大学讲学。一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:“我的年龄的立方是个4位数。我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”请你推算一下,他当时到底有多年轻。
- #include <stdio.h>
- int main()
- {
- int a,b,i;
- a=i*i*i;
- b=i*i*i*i;
- for(i=1;i<=100;i++)
- {
- if(a/1000>=1&&a/1000<=9)//判断i三次方是否是四位数
- if(b/100000>=1&&b/100000<=9)//判断i四次方是否是六位数
- if(yes(a,b)==1)//判断a,b中所有数是否符合刚好包含0——9 , 若返回值为1,则符合
- printf("%d",i);//将符合的i的值输出,i即为年龄
-
-
- }
- return 0;
- }
- int yes(int a,int b)
- {
- int i,j,k,t;
- int p[10];
- int q[10]={9,8,7,6,5,4,3,2,1,0};
- p[0]=a/1000;
- p[1]=(a-1000*p[0])/100;
- p[2]=(a-1000*p[0]-100*p[1])/10;
- p[3]=a-1000*p[0]-100*p[1]-10*p[2];//把a中的各位赋给p[0]--p[3]
- p[4]=b/100000;
- p[5]=(b-100000*p[4])/10000;
- p[6]=(b-100000*p[4]-10000*p[5])/1000;
- p[7]=(b-100000*p[4]-10000*p[5]-1000*p[6])/100;
- p[8]=(b-100000*p[4]-10000*p[5]-1000*p[6]-100*p[7])/10;
- p[9]=b-100000*p[4]-10000*p[5]-1000*p[6]-100*p[7]-10*p[8];
- //把b中的各位赋给p[4]---p[9]
- for(i=0; i<9; i++){
-
- for(j=0; j<9-i; j++)
- {
- if(p[j]<p[j+1]){
- t = p[j];
- p[j] = p[j+1];
- p[j+1] = t;
- }
- }
- }//将p[10]内的元素从大到小排序
- for(i=0,j=1;i<10;i++)
- {
- if(p[i]===q[i]&&j==1)
- j=1;
- else
- j=0;
-
-
- }//判断p[10]与q[10]是否相等
- if (j=1)
- return 1;
- else
- return 0;
- }
复制代码
最后没有输出任何结果
c 写这些东东 太麻烦了 python 也就是10几行代码的事情
- #include <stdio.h>
- void sort(int *arr, int sz)
- {
- for (int j = sz - 1; j >= 0; j--)
- {
- for (int i = 0; i+1 <= j; i++)
- {
- if (arr[i] > arr[i + 1])
- {
- int tmp = arr[i];
- arr[i] = arr[i + 1];
- arr[i + 1] = tmp;
- }
- }
- }
- }
- int isarr(int* a,int alen,int * b,int blen){
- if (alen!=blen){
- return 0;
- }
- else{
- for (int i=0;i<alen;i++){
- if (a[i]!=b[i])
- {
- return 0;
- }
- }
- }
- return 1;
- }
- void chaifen(int num,int *buf){
- int cnt=0;
- do{
- buf[cnt++]=num%10;
- num/=10;
- }while(0!=num);
- }
- void addarr(int* s,int slen,int *d,int dlen){
- for (int i=0;i<dlen;i++){
- s[slen+i]=d[i];
- }
- }
- int main()
- {
- int a[]={0,1,2,3,4,5,6,7,8,9};
- int buf[10]={0};
- int buf2[10]={0};
- int y=1;
- while(1)
- {
- if (y*y*y>9999 || y*y*y*y>999999){
- break;
- }
- if(y*y*y<1000 || y*y*y*y<100000)
- {
- y++;
- continue;
- }
- chaifen(y*y*y,buf);
- chaifen(y*y*y*y,buf2);
- addarr(buf,4,buf2,6);
- sort(buf,10);
- if(isarr(buf,10,a,10)){
- printf("year:%d\n",y);
- break;
- }
- y++;
- }
- return 0;
- }
复制代码
|
|