码迷,mamicode.com
首页 > 其他好文 > 详细

[2016-05-11][51nod][1016 水仙花数 V2]

时间:2016-05-11 23:13:11      阅读:393      评论:0      收藏:0      [点我收藏+]

标签:

  • 时间:2016-05-11 21:50:41 星期三

  • 题目编号:[2016-05-11][51nod][1016 水仙花数 V2]

  • 题目大意:水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153,1634 = 1^4 + 6^4 + 3^4 + 4^4)。

    给出一个整数M,求 >= M的最小的水仙花数。(10 <= M <= 10^60)
  • 分析:10^60内,只有89个水仙花数,打表即可

  1. 0
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8. 7
  9. 8
  10. 9
  11. 153
  12. 370
  13. 371
  14. 407
  15. 1634
  16. 8208
  17. 9474
  18. 54748
  19. 92727
  20. 93084
  21. 548834
  22. 1741725
  23. 4210818
  24. 9800817
  25. 9926315
  26. 24678050
  27. 24678051
  28. 88593477
  29. 146511208
  30. 472335975
  31. 534494836
  32. 912985153
  33. 4679307774
  34. 32164049650
  35. 32164049651
  36. 40028394225
  37. 42678290603
  38. 44708635679
  39. 49388550606
  40. 82693916578
  41. 94204591914
  42. 28116440335967
  43. 4338281769391370
  44. 4338281769391371
  45. 21897142587612075
  46. 35641594208964132
  47. 35875699062250035
  48. 1517841543307505039
  49. 3289582984443187032
  50. 4498128791164624869
  51. 4929273885928088826
  52. 63105425988599693916
  53. 128468643043731391252
  54. 449177399146038697307
  55. 21887696841122916288858
  56. 27879694893054074471405
  57. 27907865009977052567814
  58. 28361281321319229463398
  59. 35452590104031691935943
  60. 174088005938065293023722
  61. 188451485447897896036875
  62. 239313664430041569350093
  63. 1550475334214501539088894
  64. 1553242162893771850669378
  65. 3706907995955475988644380
  66. 3706907995955475988644381
  67. 4422095118095899619457938
  68. 121204998563613372405438066
  69. 121270696006801314328439376
  70. 128851796696487777842012787
  71. 174650464499531377631639254
  72. 177265453171792792366489765
  73. 14607640612971980372614873089
  74. 19008174136254279995012734740
  75. 19008174136254279995012734741
  76. 23866716435523975980390369295
  77. 1145037275765491025924292050346
  78. 1927890457142960697580636236639
  79. 2309092682616190307509695338915
  80. 17333509997782249308725103962772
  81. 186709961001538790100634132976990
  82. 186709961001538790100634132976991
  83. 1122763285329372541592822900204593
  84. 12639369517103790328947807201478392
  85. 12679937780272278566303885594196922
  86. 1219167219625434121569735803609966019
  87. 12815792078366059955099770545296129367
  88. 115132219018763992565095597973971522400
  89. 115132219018763992565095597973971522401
  • 遇到的问题:

    • 比较大小,不能直接使用string的重载<号,这时”4” > “300”
    • 应该在相等长度下才直接比较,不同长度直接比较长度即可
    • 最后,没有答案记得输出 No Solution
  1. #include<string>
  2. #include<iostream>
  3. using namespace std;
  4. string data[] = {"0","1","2","3","4","5","6","7","8","9","153","370","371","407","1634","8208","9474","54748","92727","93084","548834","1741725","4210818","9800817","9926315","24678050","24678051","88593477","146511208","472335975","534494836","912985153","4679307774","32164049650","32164049651","40028394225","42678290603","44708635679","49388550606","82693916578","94204591914","28116440335967","4338281769391370","4338281769391371","21897142587612075","35641594208964132","35875699062250035","1517841543307505039","3289582984443187032","4498128791164624869","4929273885928088826","63105425988599693916","128468643043731391252","449177399146038697307","21887696841122916288858","27879694893054074471405","27907865009977052567814","28361281321319229463398","35452590104031691935943","174088005938065293023722","188451485447897896036875","239313664430041569350093","1550475334214501539088894","1553242162893771850669378","3706907995955475988644380","3706907995955475988644381","4422095118095899619457938","121204998563613372405438066","121270696006801314328439376","128851796696487777842012787","174650464499531377631639254","177265453171792792366489765","14607640612971980372614873089","19008174136254279995012734740","19008174136254279995012734741","23866716435523975980390369295","1145037275765491025924292050346","1927890457142960697580636236639","2309092682616190307509695338915","17333509997782249308725103962772","186709961001538790100634132976990","186709961001538790100634132976991","1122763285329372541592822900204593","12639369517103790328947807201478392","12679937780272278566303885594196922","1219167219625434121569735803609966019","12815792078366059955099770545296129367","115132219018763992565095597973971522400","115132219018763992565095597973971522401"};
  5. int main(){
  6. string str;
  7. cin>>str;
  8. int sz = str.length(),len;
  9. for(int i = 0 ; i < 89;++i){
  10. len = data[i].length();
  11. if((len == sz && data[i] >= str) || len > sz){
  12. cout<<data[i]<<"\n";
  13. return 0;
  14. }
  15. }
  16. puts("No Solution");
  17. return 0;
  18. }




[2016-05-11][51nod][1016 水仙花数 V2]

标签:

原文地址:http://www.cnblogs.com/qhy285571052/p/3f1cb4f6ddcf258d06784f0d07fa8b98.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!