赞
踩
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
把 20192019 分解成 33 个各不相同的正整数之和,并且要求每个正整数都不包含数字 22 和 44,一共有多少种不同的分解方法?
注意交换 33 个整数的顺序被视为同一种方法,例如 1000+1001+181000+1001+18 和 1001+1000+181001+1000+18 被视为同一种。
- #include <iostream>
- #include<algorithm>
- using namespace std;
- bool pan(int a,int b,int c)
- {
- int n;
- while(a)
- {
- n=a%10;
- if(n==4||n==2)return false;
- a/=10;
- }
- while(b)
- {
- n=b%10;
- if(n==4||n==2)return false;
- b/=10;
- }
- while(c)
- {
- n=c%10;
- if(n==4||n==2)return false;
- c/=10;
- }
- return true;
- }
- int main()
- {
- int cnt=0;
- for(int i=1;i<=2019;i++)
- for(int j=i+1;j<=2019;j++)
- for(int k=j+1;k<=2019;k++)
- {
- if(i+j+k==2019&&pan(i,j,k))cnt++;
- if(i+k+j>2019)break;
- }
- cout<<cnt;
- return 0;
- }
直接枚举法,用一个break减少一下时间复杂度就pass了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。