美文网首页
2018-11-02洛谷P1008三连击题解

2018-11-02洛谷P1008三连击题解

作者: 苏夜月 | 来源:发表于2018-11-02 18:43 被阅读0次

    我的想法是让三组数分别等于a,b,c,又因为三组数要有1:2:3的关系,所以直接令b=2a,c=3a,接下来在检测a,b,c里面有没有重复的数字,把a,b,c的个十百位全部分离出来,放到一个数组里面,在用循环判断数组的元素是不是有重复,如果没有重复就输出。
    第一次做完后出错的地方:
    1、应该将flag=1放在最外层的for循环中,应该循环一次就初始化一次flag的值,否则第一次循环flag=0后后面的flag全部都会为0
    2、在比较数组的元素有没有重复的时候要注意i不能够等于j,因此在判断的时候应该加上这一条。
    3、数组元素不能够出现0

    附上最后成功运行的代码

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int a,b,c;
        int i,j;
        for(a=123;a<329;a++)
        {
            int flag=1;
            b=a*2;
            c=a*3;
            int k[9];
            int d,e,f;
            d=a;
            e=b;
            f=c;
            for(i=0;i<9;i=i+3)
            {
                k[i]=d%10;
                d=d/10;
                k[i+1]=e%10;
                e=e/10;
                k[i+2]=f%10;
                f=f/10;
            }
            for(i=0;i<9;i++)
            {
                for(j=0;j<9;j++)
                {
                    if(k[i]==k[j]&&i!=j)
                        flag=0;
                }
            }
            for(i=0;i<9;i++)
                if(k[i]==0)
                flag=0;
    
            if(flag==1)
                printf("%d %d %d\n",a,b,c);
        }
    
        return 0;
    }
    

    如果有错误或者需要改进的地方,欢迎指正

    相关文章

      网友评论

          本文标题:2018-11-02洛谷P1008三连击题解

          本文链接:https://www.haomeiwen.com/subject/xtgcxqtx.html