1027: Smith Numbers
2010-03-05 09:34
218 查看
Status | In/Out | TIME Limit | MEMORY Limit | Submit Times | Solved Users | JUDGE TYPE |
---|---|---|---|---|---|---|
stdin/stdout | 30s | 8192K | 2312 | 565 | Standard |
The sum of all digits of the telephone number is 4+9+3+7+7+7+5= 42?, and the sum of the digits of its prime factors is equally 3+5+5+6+5+8+3+7= 42. Wilansky was so amazed by his discovery that he named this kind of numbers after his brother-in-law: Smith numbers.
As this observation is also true for every prime number, Wilansky decided later that a (simple and unsophisticated) prime number is not worth being a Smith number, so he excluded them from the definition.
Wilansky published an article about Smith numbers in the Two Year College Mathematics Journal and was able to present a whole collection of different Smith numbers: For example, 9985 is a Smith number and so is 6036. However,Wilansky was not able to find a Smith number that was larger than the telephone number of his brother-in-law. It is your task to find Smith numbers that are larger than 4937775!
Input
The input consists of a sequence of positive integers, one integer per line. Each integer will have at most 8 digits. The input is terminated by a line containing the number 0.Output
For every number n > 0 in the input, you are to compute the smallest Smith number which is larger than n, and print it on a line by itself. You can assume that such a number exists.Sample Input
4937774 0
Sample Output
4937775
这道题写的太差了,看来真的不在状态。
整个过程没有考虑清楚,首先这个SMITH数必须是合数,题意没读清楚,一位只要是质数都是。
第二,这个过程的N1,N2,SUM,SUM2,T的初始化没弄好
第三,如果T是大于等于10的,那么就需要把它的各位数字相加,这也没弄清楚
#include<iostream> int is_prime(int n) { for(int i=2;i*i<=n;i++) if(n%i==0) return i; return 1; } int main() { int n,n2; freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); while((scanf("%d",&n),n)!=0) { int sum=0,sum2=0; n2=n; while(1) { n=n2; n++; n2=n; sum=0; sum2=0; int t=n; while(t>0) { sum+=t%10; t=t/10; } t=is_prime(n); if(t==1) continue; while(t>1) { int t2=t; if(t2>=10) { while(t2>0) { sum2+=t2%10; t2=t2/10; } } else sum2+=t2; n=n/t; t=is_prime(n); } while(n>0) { sum2+=n%10; n=n/10; } if(sum2==sum) break; } printf("%d/n",n2); } return 0; }
相关文章推荐
- 1027: Smith Numbers
- ZOJ 1027
- ZOJ 1027 Human Gene Functions
- ZOJ 1027 Human Gen Functions
- ZOJ 1027 Human Gene Functions (DP)
- Ignatius and the Princess II hdu 1027
- [恢]hdu 1027
- 杭电1027
- CSU 1027 Smallbox魔方
- next_permutation & prev_permutation & hdu 1027 Ignatius and the Princess II
- hdu 1027 Ignatius and the Princess II
- 杭电 1027
- hdu1027
- 杭电1027 Ignatius and the Princess II 字典序
- ZOJ 1027 Human Gene Functions(DP)
- 杭电 1027 Ignatius and the Princess II
- [DP] ZOJ1013、1027、1074
- 1027:电子钟
- light oj 1027 A Dangerous Maze
- lightoj 1027 简单概率dp