Problem - 122A - Codeforces
代码:
#include<bits/stdc++.h>
using namespace std;
bool is_lucky(int n)
{
set<int> q;
while(n>=10)
{
q.insert(n%10);
n=n/10;
}
q.insert(n);
bool flag=true;
for(auto x:q)
{
if(x!=4&&x!=7)
{
return false;
}
}
return true;
}
int main()
{
int n;
cin>>n;
int h=n;
int ans[10001];
int top=0;
if(is_lucky(h))
{
cout<<"YES";
return 0;
}
for(int i=4;i<=n/2;i++)
{
if(is_lucky(i)&&h%i==0)
{
cout<<"YES"<<endl;
return 0;
}
}
cout<<"NO"<<endl;
return 0;
}
思路:
幸运数字:每一位数字都是4或7
几乎幸运数字:可以被幸运数字整除
所以本题可以先判断数字是不是幸运数字,若不是则判断其是不是几乎幸运数字