金仙花數

fangzm發表於2020-09-17

金仙花數

題目描述:

定義金仙花數 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;

 

}

 

相關文章