标题: 数的分解(本题总分:10 分)
【问题描述】
把 2019 分解成 3 个各不相同的正整数之和,并且要求每个正整数都不包
含数字 2 和 4,一共有多少种不同的分解方法?
注意交换 3 个整数的顺序被视为同一种方法,例如 1000+1001+18 和
1001+1000+18 被视为同一种。
【答案提交】
这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一
个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
解题思路:
循环出答案,要注意去重的问题,可以让 3 个变量(假设为 a, b, c)从 1 开始枚举,即暴力,这样的出来的结果肯定会有重复,重复原因就是 a 可能和 b、c 重合,同样,b 也可能和 a、c 出现重合,c 也可能和 a、b 重合。即需要把结果除以 6 。
另一种就是控制循环是a,b,c的值,让a从a开始,b=a+1,c=b+1开始,这样abc三个值也就不会有重复。这也是下面代码的方法
代码:
#include<stdio.h>int reso(int i=0)
{ int s=0;int a[4];for(i=0;i<4;i++){if(a[i]==2||a[i]==4)s=0;elses=a[1]*1000+a[2]*100+a[3]*10+a[4]; } return s;
}
main()
{ int count=0;int a,b,c;for(a=1;a<2019;a++){if(reso(a)!=0)continue;for(b=a+1;b<2019;b++){if(reso(b)!=0)continue;for(c=b+1;c<2019;c++){if(reso(c)!=0)count=count+1;}}}printf("%d",count);
}