搜索
查看: 1569|回复: 2
打印 上一主题 下一主题

挑战1

[复制链接]
跳转到指定楼层
楼主
发表于 2013-11-4 13:50:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
挑战的所有代码使用的编译器仍然是clang 3.1
不过编译参数为-Wall
如果碰到在ahaC下不能编译的情况,请自己找一下有没有for(int i = ...)之类的代码,然后手动改成int i; for(i = ...)

挑战1在书上已经有详细解释了,但是这里还可以补充一点,穷举每个数位上的数字然后算乘法,要比用除法分割每个数位上的数字快——因为除法计算本来就要比乘法计算慢,虽说这道题目的数字很小根本察觉不出,但是要有这个意识。

另外,题目要求的是最大数,所以用一个变量保存最大数字就行了。
  1. #include <stdio.h>

  2. int main()
  3. {
  4.   int max_num = 153;
  5.   for(int a=1; a!=10; ++a)
  6.     for(int b=0; b!=10; ++b)
  7.       for(int c=0; c!=10; ++c)
  8.         if(a*a*a + b*b*b + c*c*c == a*100 + b*10 + c &&
  9.            a*100 + b*10 + c > max_num)
  10.           max_num = a*100 + b*10 + c;
  11.   printf("%d\n", max_num);
  12.   return 0;
  13. }
复制代码
沙发
发表于 2014-5-28 14:44:58 | 只看该作者
暂时还是看不懂。。。菜鸟一只
板凳
发表于 2014-6-8 17:11:08 | 只看该作者
菜鸟123 发表于 2014-5-28 14:44
暂时还是看不懂。。。菜鸟一只

我的菜鸟算法
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main()
{
        system("color 0a");
    int a,b,c,n,m;
   /*printf("
            挑战一:\n
                        153是一个非常优美的数         153=1*1*1+5*5*5+3*3*3
                        你知道在三位整数(abc)中,\n
                        满足abc=a*a*a+b*b*b+c*c*c这个条件的最大的整数是什么?\n
            ");
    */
    printf("挑战一\n");
    printf("abc=a*a*a+b*b*b+c*c*c;\n");
    for(a=0;a<10;++a)
    {
                for(b=0;b<10;++b)
        {
                        for(c=0;c<10;++c)
            {
                                n=a*100+b*10+c;
                m=a*a*a+b*b*b+c*c*c;
                if(n==m)
                {
                    printf("a=%d; b=%d; c=%d;\n",a,b,c);
                                        printf("abc=%d        ",m);
                                    printf("\n\n");
                }
            }
        }
    }
    printf("\n");
        system("pause");
        return 0;
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表