金仙花数

题目描述:

定义金仙花数 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;
}
posted @ 2020-09-17 19:40  Euclid·Guisi  阅读(969)  评论(0编辑  收藏  举报