把 2019 分解成 3 个各不相同的正整数之和,
并且要求每个正整数都不包含数字2和4,一共有多少种不同的分解方法?
注意交换3个整数的顺序被视为同一种方法
这道题的主要目的就是对数字的分解,分解出来三个数字,对于三个数字的特点通过题干我们可以得知:
1.要求分解成三个整数
2.三个整数各不相同,不可以出现重复
3.三个数的顺序调换加和得到2019被视作为一种方法
4.被分解的三个数中2,4 不可以同时出现
对于这种问题的解法我们采用遍历法将三个数值进行确定,为了满足上述的四个特点,我们在设计for循环时加上对他们的判断即可。
对于特点一,使用for循环即可解决
对于特点二三,我们可以规定三个数有大小顺序。我们可以规定被分解的第一个数必须大于第二个数,而第二个数必须大于第三个数。以这样的的方法,我们满足了这三个数的特点二和特点三。
对于特点四,我们在每次在for得到整数时,都对他进行逐位拆解,然后再逐位判断即可。
代码如下:
#include<stdio.h>
int judge(int num)
{
while (num)
{
if ((num % 10 == 2) || (num % 10 == 4))
{
return 0;
}
num = num / 10;
}
return 1;
}
int main()
{
int i = 0; int j = 0; int k = 0;
int count = 0;
for (i = 1; i < 2019; i++)
{
{
for (j = 1; j < 2019; j++)
{
k = 2019 - i - j;
if (judge(j)&&judge(i)&&judge(k))
{
if (i < j && j < k)
count++;
}
}
}
}
printf("%d\n", count);
return 0;
}版权声明:本文为weixin_63192658原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。