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
47
YES
16
YES
78
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;
}