测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A41771. 分解整数

填空题 困难

题目描述

分解整数

题目描述

给定一个正整数N,然后将N分解成3个正整数之和。计算出共有多少种符合要求的分解方法。

要求:

1)分解的3个正整数各不相同;

2)分解的3个正整数中都不含数字3和7。

如:N为8,可分解为(1,1,6)、(1,2,5)、(1,3,4)、(2,2,4)、(2,3,3),其中满足要求的分解方法有1种,为(1,2,5)。

输入描述

输入一个正整数N(5<N<501),表示需要分解的正整数

输出描述

输出一个整数,表示共有多少种符合要求的分解方法

样例输入

8

样例输出

1

参考答案

#include <iostream> #include <cstdio> using namespace std; bool check(int a,int b,int c){ if(a>=b || a>=c || b>=c) return false; while(a>0){ if(a%10==3||a%10==7) return false; a/=10; } while(b>0){ if(b%10==3||b%10==7) return false; b/=10; } while(c>0){ if(c%10==3||c%10==7) return false; c/=10; } return true; } int main() { int n,ans=0; cin>>n; for(int i=1;i<=n/3;i++) for(int j=i+1;j<=n/2;j++){ int k=n-i-j; if(check(i,j,k)) ans++; } cout<<ans<<endl; return 0; }
上一题 下一题