题目描述 把2019分解成3个各不相同的正整数之和,并且要求每个正整数都不包含数字2和4,一共有多少种不同的分解方法?
注意交换3个整数的顺序被视为同一种方法,例如1000+1001+18 和1001+1000+18 被视为同一种。 时间限制: 1 Sec
内存限制: 256 MB
答案:40785
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod = 1e9+7;
bool check(int n)
{
stringstream ss;
ss << n;
string t;
ss >> t;
bool f = true;
for(int i = 0; i < t.length(); ++i)
{
if(t[i] == '2' || t[i] == '4')
{
f = false;
break;
}
}
return f;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int ans = 0;
for(int i = 1; 3*i <= 2019; ++i)
{
for(int j = i+1; i+j*2 <= 2019 ; ++j)
{
int k = 2019 - i - j;
if(k <= j)
continue;
if(check(i) && check(j) && check(k))
{
ans ++;
}
}
}
cout << ans;
return 0;
}