題目描述:
定義金仙花數 x 滿足以下性質:
X 的各個數位之和大於等於 20,且 x 的各個數位乘積大於等於 162 。
給定 n ,求小於等於 n 的金仙花數個數。
輸入格式:
一個正整數 n 。
輸出格式:
一個數表示答案。
樣例輸入1:
299
樣例輸出1:
1
約定:
1<=n<=100000
#include<bits/stdc++.h> using namespace std; int pxy(int m){ int a[7]={0}; int n=m; int k=0; int b[7]; for(int i=1;i<=6;i++){ a[i]=n%10; n=n/10; } for(int i=1;i<=6;i++){ k+=a[i]; } return k; } int fzm(int m){ int a[5]={0}; int n=m; int k=1; int b[5]={0}; for(int i=0;i<=5;i++){ a[i]=n%10; if(n>0&&a[i]>=0){ b[i]=1; } n=n/10; } for(int i=0;i<=5;i++){ if(b[i]==1){ k=k*a[i]; } } return k; } int main(){ int n,ans=0; cin>>n; for(int i=1;i<=n;i++){ int l1=fzm(i); int t1=pxy(i); if(l1>=162){ if(t1>=20){ ans++; } } } cout<<ans<<endl; }