题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
把 20192019 分解成 33 个各不相同的正整数之和,并且要求每个正整数都不包含数字 22 和 44,一共有多少种不同的分解方法?
注意交换 33 个整数的顺序被视为同一种方法,例如 1000+1001+181000+1001+18 和 1001+1000+181001+1000+18 被视为同一种。
思路:三个数不能重复出现,那直接让三个数按顺序排好 i,j,2019-i-j,三者从大到小,再分别用check判断一下就行
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
using namespace std;
int check(int a)
{
int t,i;
while(a>0)
{
t=a%10;
a/=10;
if(t==2||t==4)
return 0;
}
return 1;
}
int main()
{
int n=2019;
int cnt=0,i,j,k,l;
for( i=1;i<=2019;i++)
{
if(check(i)){
for(j=i+1;j<2019-i-j;j++)
{
if(check(j)&&check(2019-i-j))
cnt++;
}
}
}
printf("%d",cnt);
return 0;
}