#include <iostream> #include <bits/stdc++.h> using namespace std; bool prime[100000]; int ans[100000],m=0; long long divded(long long a) { long long temp=a; long long sum=0; while(temp) { sum+=temp%10; temp/=10; } return sum; } void is_prime() { memset(prime,1,sizeof(prime)); prime[0]=prime[1]=0; for(int i=2; i<10000; i++) { if(prime[i]) ans[m++]=i; for(int j=i*i; j<10000; j+=i) prime[j]=0; } } bool isprime(long long x) { int y=sqrt(x); for(int i=0; i<m&&ans[m]<=y; i++) if(x%ans[i]==0) return false; return true; } int main() { long long sum1,sum2=0,n; bool flag=0; is_prime(); cin>>n; sum1=divded(n); for(int i=0; i<m;) { if(n%ans[i]==0) { n/=ans[i]; sum2+=divded(ans[i]); if(isprime(n)||n==1) { flag=1; break; } if(flag) break; } else i++; if(flag) break; } if(n!=1) sum2+=divded(n); if(sum1==sum2) cout <<1<< endl; else cout <<0<< endl; return 0; }
B - Identify Smith Numbers-SDUT 算法训练赛
最新推荐文章于 2024-05-23 18:35:33 发布