浮游ou 发表于 2021-7-6 11:36:53

萌新运行不出结果哇,有带佬看看哪不对咩

美国数学家维纳(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;
        int q={9,8,7,6,5,4,3,2,1,0};
        p=a/1000;
        p=(a-1000*p)/100;
        p=(a-1000*p-100*p)/10;
        p=a-1000*p-100*p-10*p;//把a中的各位赋给p--p
        p=b/100000;
        p=(b-100000*p)/10000;
        p=(b-100000*p-10000*p)/1000;
        p=(b-100000*p-10000*p-1000*p)/100;
        p=(b-100000*p-10000*p-1000*p-100*p)/10;
        p=b-100000*p-10000*p-1000*p-100*p-10*p;
        //把b中的各位赋给p---p
    for(i=0; i<9; i++){
   
      for(j=0; j<9-i; j++)   
                {
            if(p<p){
                t = p;
                p = p;
                p = t;
            }
      }
    }//将p内的元素从大到小排序
        for(i=0,j=1;i<10;i++)
                {
                        if(p===q&&j==1)
                        j=1;
                        else
                        j=0;
               
               
                }//判断p与q是否相等
                if (j=1)
                return 1;
                else
                return 0;
}

最后没有输出任何结果


wp231957 发表于 2021-7-6 13:27:50

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 > arr)
                        {
                                int tmp = arr;
                                arr = arr;
                                arr = 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!=b)
            {
                return 0;
            }
      }
    }
    return 1;
}
void chaifen(int num,int *buf){
        int cnt=0;
        do{
                buf=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=d;
    }
}
int main()
{
      int a[]={0,1,2,3,4,5,6,7,8,9};
      int buf={0};
      int buf2={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;
}


浮游ou 发表于 2021-7-6 15:17:48

wp231957 发表于 2021-7-6 13:27
c 写这些东东太麻烦了    python 也就是10几行代码的事情

非常感谢,我照着您的思路又写了一遍,成功了。
只不过我依然没找出来我原本思路的错误,但还是非常感谢
页: [1]
查看完整版本: 萌新运行不出结果哇,有带佬看看哪不对咩