题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
把 20192019 分解成 33 个各不相同的正整数之和,并且要求每个正整数都不包含数字 22 和 44,一共有多少种不同的分解方法?
注意交换 33 个整数的顺序被视为同一种方法,例如 1000+1001+181000+1001+18 和 1001+1000+181001+1000+18 被视为同一种。
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
首先需要排除这三个数带2或者带4,然后暴力搜索符合三者相加等于2019的三个数,因为三个数全排列有六种方案,排除重复的,所以需要除以6
-
#include<iostream> using namespace std; bool f(int x){ while(x){ if(x>10){ int temp=x%10; x/=10; if(temp==2||temp==4){ return true; } }else{ if(x==2||x==4){ return true; } return false; } } int main(){ int a=2019; int cnt=0; for(int i=1;i<2019;i++){ for(int j=1;j<2019;j++){ for(int k=1;k<2019;k++){ if(i+j+k==a&&f(i)==0&&f(j)==0&&f(k)==0){ cnt++; } } } } cout<<cnt/6; return 0; }