本人大一小白,请问大家为什么不对啊😭

题目内容:
美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:“我年龄的立方是一个4位数。我年龄的4次方是一个6位数。这
10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。”请你编程算出他当时到底有多年轻。


#include <stdio.h>
int main()
{
    int age,num,i,j,f=1;
    int a[10];
    for (age = 10; age <= 22; age++)
    {
        num=age*age*age+age*age*age*age*10000;//把4位数和6位数转化成一个十位数
        for (i = 0; i < 10; i++)//把每一位数装进数组里,a[0]就是个位
        {
            a[i]=num%10;
            num=num/10;
        }
        for (i= 0; i <9; i++)
        {
            for(j=i+1;j<10;j++)
            {
                if(a[i]==a[j])
                {
                    f = 0;
                    break;
                }
            }
        }
        if(f)
            printf("age=%d\n",age);
    }
    return 0;
}

答案是18,修改如下,供参考:

#include <stdio.h>
int main()
{
    int age, num, i, j;
    int a[10] = {0};
    for (age = 10; age <= 22; age++)
    {
        num = age * age * age;
        while(num){
            a[num % 10]++;
            num /= 10;
        }
        num = age * age * age * age;
        while (num) {
            a[num % 10]++;
            num /= 10;
        }
        for (i = 0; i < 10; i++)
        {
            if (a[i] != 1)
                break;
        }
        if (i >= 10) {
            printf("age=%d\n", age);
            break;
        }
        for (i = 0; i < 10; i++)
            a[i] = 0;
    }
    return 0;
}

答案是17吧,我是在你你这个程序上改的,不过你这个程序的思想可能有点不严谨,但是能算出来。


#include <stdio.h>
int main()
{
    int age, num, i, j, f ;
    int a[10];
    int b[11] = { 0,1,2,3,4,5,6,7,8,9 };
    for (age = 17; age <= 38; age++)
    {
        num = age * age * age + age * age * age * age * 10000;//把4位数和6位数转化成一个十位数
        for (i = 0; i < 10; i++)//把每一位数装进数组里,a[0]就是个位
        {
            a[i] = num % 10;
            num = num / 10;
        }
        for (i = 0; i < 10; i++)
        {
            for (j = 0; j < 10; j++)
            {
                if (a[i] == b[j])
                {
                    b[j] = 11;
                }
           }
        }
        for (i = 0; i < 10; i++)
        {
            if (b[i] != 11)
            {
                f = 0;
            }
            else
            {
                f = 1;
            }
        }
        if (f == 1)
        {
            printf("age=%d\n", age);
            break;
        }
    }
    return 0;
}
```c


```

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^