1 数的分解
拆分成3个数相加得到该数
 
 然后采用了一种巨愚蠢的办法:
int main()
{
    int count = 0;
    int a = 2;
    int b = 0;
    int c = 1;
    int d = 9;
    int a1, a2, a3;
    int c1, c2, c3;
    int d1, d2, d3;
    for (a1 = 0; a1 < 2; a1++)
    {
        for (a2 = 0; a2 < 2; a2++)
        {
            for (a3 = 0; a3 < 2; a3++)
            {
                if (a1 + a2 + a3 == 2)
                {
                    for (c1 = 0; c1 <= 1; c1++)
                    {
                        for (c2 = 0; c2 <= 1; c2++)
                        {
                            for (c3 = 0; c3 <= 1; c3++)
                            {
                                if (c1 + c2 + c3 == 1)
                                {
                                    for (d1 = 0; d1 <= 9; d1++)
                                    {
                                        for (d2 = 0; d2 <= 9; d2++)
                                        {
                                            for (d3 = 0; d3 <= 9; d3++)
                                            {
                                                if (d1 + d2 + d3 == 9
                                                    && d1 != 2 && d1 != 4
                                                    && d2 != 2 && d2 != 4
                                                    && d3 != 2 && d3 != 4)
                                                {
                                                    if (a1 * 1000 + 0 * 100 + c1 * 10 + d1 != a2 * 1000 + 0 * 100 + c2 * 10 + d2
                                                        && a2 * 1000 + 0 * 100 + c2 * 10 + d2 != a3 * 1000 + 0 * 100 + c3 * 10 + d3
                                                        && a1 * 1000 + 0 * 100 + c1 * 10 + d1 != a3 * 1000 + 0 * 100 + c3 * 10 + d3
                                                        && a1 * 1000 + 0 * 100 + c1 * 10 + d1 != 0)
                                                    {
                                                        count++;
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    printf("%d", count);
    return 0;
}
为什么说这种方法愚蠢呢?
 我将2019 拆分成2 、0、1、9四个数分别计算(个位十位百位千位)
 2 只有1 1 0 这种情况
 0 只有0 0 0 这种情况
 1 只有0 0 1 这种情况
 然后排列组合 判断几数相加是否等于2019
但是我没有思考到1个问题:进位,因为可以通过进位的方式获得更大的值,三数相加任然可以等于2019,我只是单纯的考虑到每一位对应的值
 所以当看到正确结果完全傻眼了,思考方向错了!!!
那么正确方法应该如何处理呢?
2 猜生日
#include<stdio.h>
int main(void)
{
    int b=19000600,y,d,x;
    for(y=0;;y++)
    {
        for(d=1;d<=30;d++)
        {
            x=b+y*10000+d;
            if(x%2012==0&&x%3==0&&x%12==0)
            {
                printf("%d",x);
                return 1;
            }    
        }
    }
}










![English Learning - L2-5 英音地道语音语调 弹力双元音 [ɪə] [ʊə] [eə] 2023.03.6 周一](https://img-blog.csdnimg.cn/7d803bfc24364bbe92f6e9f4d7747cc2.png)








