鱼C论坛

 找回密码
 立即注册
查看: 1628|回复: 2

[已解决]萌新运行不出结果哇,有带佬看看哪不对咩

[复制链接]
发表于 2021-7-6 11:36:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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;
}

最后没有输出任何结果


最佳答案
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[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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-7-6 15:17:48 | 显示全部楼层
wp231957 发表于 2021-7-6 13:27
c 写这些东东  太麻烦了    python 也就是10几行代码的事情

非常感谢,我照着您的思路又写了一遍,成功了。
只不过我依然没找出来我原本思路的错误,但还是非常感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 16:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表