Lucky Division
Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d
& %I64u
SubmitStatusPracticeCodeForces
122A
Description
Petya loves lucky numbers. Everybody knows that lucky numbers are positive integers whose decimal representation contains only the lucky digits
4 and 7. For example, numbers
47, 744,
4 are lucky and
5, 17,
467 are not.
Petya calls a number
almost lucky if it could be evenly divided by some lucky number. Help him find out if the given number
n is almost lucky.
Input
The single line contains an integer
n(1 ≤ n ≤ 1000) — the number that needs to be checked.
Output
In the only line print "YES" (without the quotes), if number
n is almost lucky. Otherwise, print "NO" (without the quotes).
Sample Input
Input
47
Output
YES
Input
16
Output
YES
Input
78
Output
NO
解題思路:本題是思維題目,理解題意透了就可以解得。
題目意思:一個數字,要是它只由4,7構成,它就是幸運數。能被幸運數整除的數也是幸運數。給你一個數,問是不是幸運數。
#include<stdio.h>#include<string.h>int main(){ int lu[1000]={4,7,44,77,47,74,444,777,477,747,774,744,474,447}; //1000以內所有只有4,7,組成的數,記錄所有幸運數 int x[1002]; //所有幸運數的雜湊儲存表,1代表是幸運數,0代表不是幸運數 int n,i,j=14; memset(x,0,sizeof(x)); for(n=1;n<=1000;n++) { for(i=0;i<j;i++) if(n==lu[i]||n%lu[i]==0) //在幸運數列表中的或能被幸運數整除的數 { lu[j++]=n; x[n]=1; break; } } int m; while(scanf("%d",&m)!=EOF) { if(x[m]==1) printf("YES\n"); else printf("NO\n"); } return 0;}