| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
很暴力居然0ms。。。#include<stdio.h>
const int maxn=12000;
int a[maxn],b[maxn],tot;
inline int sell(int x){
int g=0;
while(x>0){g+=x%10;x/=10;}
return g;
}
inline void prime(){
int i,j,k;
for(i=2;i<=11000;i++)a[i]=0;
a[1]=1;
for(j=1;j<=11000;j++)if(a[j]==0){for(k=2;k<=11000/j;k++)a[j*k]=1;}
tot=0;
for(j=1;j<=11000;j++)if(a[j]==0)b[++tot]=j;
}
inline bool check(int x){
int i;
if(x==2)return 1;
for(i=1;i<=tot;i++)
if(b[i]*b[i]>x)return 1;
else if(x%b[i]==0)return 0;
}
int main(){
int n,t,tt,t2,j,i,t1;
prime();
while(scanf("%d",&n),n!=0){
for(i=n+1;;i++){
if(check(i))continue;
t=sell(i);tt=i;t2=0;
for(j=1;j<=tot;j++)
if(i%b[j]==0){
t1=sell(b[j]);
while(tt%b[j]==0){tt/=b[j];t2+=t1;}
if(t2>t||tt==1)break;
}
else if(b[j]*b[j]>tt)break;
if(tt==1)
if(t2==t)break;
else continue;
if(t2>t)continue;
if(sell(tt)+t2==t)break;
}
printf("%d\n",i);
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator