网站 备案网站,给网站做seo诊断,网站专题制作软件,html5响应式企业网站标题#xff1a; 数的分解#xff08;本题总分#xff1a;10 分#xff09;
【问题描述】 把 2019 分解成 3 个各不相同的正整数之和#xff0c;并且要求每个正整数都不包 含数字 2 和 4#xff0c;一共有多少种不同的分解方法#xff1f; 注意交换 3 个整数的顺序被视…标题 数的分解本题总分10 分
【问题描述】 把 2019 分解成 3 个各不相同的正整数之和并且要求每个正整数都不包 含数字 2 和 4一共有多少种不同的分解方法 注意交换 3 个整数的顺序被视为同一种方法例如 1000100118 和 1001100018 被视为同一种。 【答案提交】 这是一道结果填空的题你只需要算出结果后提交即可。本题的结果为一 个整数在提交答案时只填写这个整数填写多余的内容将无法得分。
解题思路
循环出答案要注意去重的问题可以让 3 个变量假设为 a, b, c从 1 开始枚举即暴力这样的出来的结果肯定会有重复重复原因就是 a 可能和 b、c 重合同样b 也可能和 a、c 出现重合c 也可能和 a、b 重合。即需要把结果除以 6 。 另一种就是控制循环是abc的值让a从a开始ba1cb1开始这样abc三个值也就不会有重复。这也是下面代码的方法
代码
#includestdio.hint reso(int i0)
{ int s0;int a[4];for(i0;i4;i){if(a[i]2||a[i]4)s0;elsesa[1]*1000a[2]*100a[3]*10a[4]; } return s;
}
main()
{ int count0;int a,b,c;for(a1;a2019;a){if(reso(a)!0)continue;for(ba1;b2019;b){if(reso(b)!0)continue;for(cb1;c2019;c){if(reso(c)!0)countcount1;}}}printf(%d,count);
}