【蓝桥杯刷题训练营】day05
创始人
2024-05-30 20:15:52

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

相关内容

热门资讯

两大情报机构当街开枪内斗,“绝... 来源:中国新闻周刊基辅街头一处民宅门口,两群身着制服的军人相互握手致意,共同行走,但很快爆发争吵。声...
既见君子,然后呢? 如何激活古典文脉的当代生命力,从千年人文积淀中寻找安顿现代人心灵、重塑精神品格的力量,是当代文学创作...
尼泊尔外长感谢中国紧急援助支持... 9月3日,中国驻尼泊尔大使张茂明会见尼泊尔外交部长希西尔。张茂明表示,此次严重泥石流灾害发生以来,中...
招商积余多地项目升级开学季服务... 观点网讯:近日,招商积余全国多个项目围绕开学季升级物业服务,服务对象覆盖社区小业主、学校学生及高校新...
4天2板金富科技:向特定对象发... (来源:财闻)9月3日,金富科技(003018.SZ)公告称,公司收到证监会出具的《关于同意金富科技...