fork download
  1. #include <iostream>
  2. #include <cstdint>
  3.  
  4. std::uintmax_t MakeHoge(std::uintmax_t N) {
  5.  
  6. std::uintmax_t R = 1;
  7. if (N == 0) { return 0; }
  8. if (N == 1) { return 1; }
  9. while (N) {
  10. if (N == 3) {
  11. N -= 3;
  12. R *= 3;
  13. }else{
  14. N -= 2;
  15. R *= 2;
  16. }
  17. //n== 1 is R*1=?.
  18. }
  19. return R;
  20. }
  21.  
  22. std::uintmax_t MakeHoge2(std::uintmax_t N) {
  23.  
  24. std::uintmax_t R = 1;
  25. if (N == 0) { return 0; }
  26. if (N == 1) { return 1; }
  27. while (N) {
  28. if (N % 3) {
  29. N -= 3;
  30. R *= 3;
  31. }
  32. else{
  33. N -= 2;
  34. R *= 2;
  35. }
  36. //n== 1 is R*1=?.
  37. }
  38. return R;
  39. }
  40. std::uintmax_t MakeHoge22(std::uintmax_t N) {
  41.  
  42. std::uintmax_t R = 1;
  43. if (N == 0) { return 0; }
  44. if (N == 1) { return 1; }
  45. while (N) {
  46. if (N % 2) {
  47. N -= 3;
  48. R *= 3;
  49. }
  50. else{
  51. N -= 2;
  52. R *= 2;
  53. }
  54. if (N == 1) { N--; }
  55. //n== 1 is R*1=?.
  56. }
  57. return R;
  58. }
  59. std::uintmax_t MakeHoge3(std::uintmax_t N) {//適当素因数分解??
  60.  
  61. std::uintmax_t R = 1;
  62. if (N == 0) { return 0; }
  63. if (N == 1) { return 1; }
  64. for (std::uintmax_t i = 2; N; i++) {
  65. while (N % i == 0&&N) {
  66. N -= i;
  67. R *= i;
  68.  
  69.  
  70. }
  71. }
  72. return R;
  73. }
  74.  
  75. int main() {
  76.  
  77. for (std::size_t i = 0; i <= 100; i++) {
  78. std::uintmax_t N1 = MakeHoge(i);
  79. std::uintmax_t N2 = MakeHoge2(i);
  80. std::uintmax_t N22 = MakeHoge22(i);
  81. std::uintmax_t N3 = MakeHoge3(i);
  82. std::cout << i << '{'
  83. << std::endl << N1
  84. << std::endl << N2
  85. << std::endl << N22
  86. << std::endl << N3
  87. << std::endl << '}' << std::endl;
  88. }
  89.  
  90. return 0;
  91. }
Time limit exceeded #stdin #stdout 5s 4372KB
stdin
Standard input is empty
stdout
0{
0
0
0
0
}
1{
1
1
1
1
}