#include <iostream> #include <cstdint> std::uintmax_t MakeHoge(std::uintmax_t N) { std::uintmax_t R = 1; if (N == 0) { return 0; } if (N == 1) { return 1; } while (N) { if (N == 3) { N -= 3; R *= 3; }else{ N -= 2; R *= 2; } //n== 1 is R*1=?. } return R; } std::uintmax_t MakeHoge2(std::uintmax_t N) { std::uintmax_t R = 1; if (N == 0) { return 0; } if (N == 1) { return 1; } while (N) { if (N %3==0) { N -= 3; R *= 3; } else{ N -= 2; R *= 2; } //n== 1 is R*1=?. } return R; } std::uintmax_t MakeHoge22(std::uintmax_t N) { std::uintmax_t R = 1; if (N == 0) { return 0; } if (N == 1) { return 1; } while (N) { if (N % 2) { N -= 3; R *= 3; } else{ N -= 2; R *= 2; } if (N == 1) { N--; } //n== 1 is R*1=?. } return R; } std::uintmax_t MakeHoge3(std::uintmax_t N) {//適当素因数分解?? std::uintmax_t R = 1; if (N == 0) { return 0; } if (N == 1) { return 1; } for (std::uintmax_t i = 2; N; i++) { while (N % i == 0&&N) { N -= i; R *= i; } } return R; } int main() { for (std::size_t i = 0; i <= 100; i++) { std::uintmax_t N1 = MakeHoge(i); std::uintmax_t N2 = MakeHoge2(i); std::uintmax_t N22 = MakeHoge22(i); std::uintmax_t N3 = MakeHoge3(i); std::cout << i << '{' << std::endl << N1 << std::endl << N2 << std::endl << N22 << std::endl << N3 << std::endl << '}' << std::endl; } return 0; }
Standard input is empty
0{ 0 0 0 0 } 1{ 1 1 1 1 } 2{ 2 2 2 2 } 3{ 3 3 3 3 } 4{ 4 4 4 4 } 5{ 6 6 6 5 } 6{ 8 9 8 8 } 7{ 12 12 12 7 } 8{ 16 18 16 16 } 9{ 24 27 24 27 } 10{ 32 36 32 32 } 11{ 48 54 48 11 } 12{ 64 81 64 64 } 13{ 96 108 96 13 } 14{ 128 162 128 128 } 15{ 192 243 192 243 } 16{ 256 324 256 256 } 17{ 384 486 384 17 } 18{ 512 729 512 512 } 19{ 768 972 768 19 } 20{ 1024 1458 1024 1024 } 21{ 1536 2187 1536 2187 } 22{ 2048 2916 2048 2048 } 23{ 3072 4374 3072 23 } 24{ 4096 6561 4096 4096 } 25{ 6144 8748 6144 3125 } 26{ 8192 13122 8192 8192 } 27{ 12288 19683 12288 19683 } 28{ 16384 26244 16384 16384 } 29{ 24576 39366 24576 29 } 30{ 32768 59049 32768 32768 } 31{ 49152 78732 49152 31 } 32{ 65536 118098 65536 65536 } 33{ 98304 177147 98304 177147 } 34{ 131072 236196 131072 131072 } 35{ 196608 354294 196608 78125 } 36{ 262144 531441 262144 262144 } 37{ 393216 708588 393216 37 } 38{ 524288 1062882 524288 524288 } 39{ 786432 1594323 786432 1594323 } 40{ 1048576 2125764 1048576 1048576 } 41{ 1572864 3188646 1572864 41 } 42{ 2097152 4782969 2097152 2097152 } 43{ 3145728 6377292 3145728 43 } 44{ 4194304 9565938 4194304 4194304 } 45{ 6291456 14348907 6291456 14348907 } 46{ 8388608 19131876 8388608 8388608 } 47{ 12582912 28697814 12582912 47 } 48{ 16777216 43046721 16777216 16777216 } 49{ 25165824 57395628 25165824 823543 } 50{ 33554432 86093442 33554432 33554432 } 51{ 50331648 129140163 50331648 129140163 } 52{ 67108864 172186884 67108864 67108864 } 53{ 100663296 258280326 100663296 53 } 54{ 134217728 387420489 134217728 134217728 } 55{ 201326592 516560652 201326592 48828125 } 56{ 268435456 774840978 268435456 268435456 } 57{ 402653184 1162261467 402653184 1162261467 } 58{ 536870912 1549681956 536870912 536870912 } 59{ 805306368 2324522934 805306368 59 } 60{ 1073741824 3486784401 1073741824 1073741824 } 61{ 1610612736 4649045868 1610612736 61 } 62{ 2147483648 6973568802 2147483648 2147483648 } 63{ 3221225472 10460353203 3221225472 10460353203 } 64{ 4294967296 13947137604 4294967296 4294967296 } 65{ 6442450944 20920706406 6442450944 1220703125 } 66{ 8589934592 31381059609 8589934592 8589934592 } 67{ 12884901888 41841412812 12884901888 67 } 68{ 17179869184 62762119218 17179869184 17179869184 } 69{ 25769803776 94143178827 25769803776 94143178827 } 70{ 34359738368 125524238436 34359738368 34359738368 } 71{ 51539607552 188286357654 51539607552 71 } 72{ 68719476736 282429536481 68719476736 68719476736 } 73{ 103079215104 376572715308 103079215104 73 } 74{ 137438953472 564859072962 137438953472 137438953472 } 75{ 206158430208 847288609443 206158430208 847288609443 } 76{ 274877906944 1129718145924 274877906944 274877906944 } 77{ 412316860416 1694577218886 412316860416 1977326743 } 78{ 549755813888 2541865828329 549755813888 549755813888 } 79{ 824633720832 3389154437772 824633720832 79 } 80{ 1099511627776 5083731656658 1099511627776 1099511627776 } 81{ 1649267441664 7625597484987 1649267441664 7625597484987 } 82{ 2199023255552 10167463313316 2199023255552 2199023255552 } 83{ 3298534883328 15251194969974 3298534883328 83 } 84{ 4398046511104 22876792454961 4398046511104 4398046511104 } 85{ 6597069766656 30502389939948 6597069766656 762939453125 } 86{ 8796093022208 45753584909922 8796093022208 8796093022208 } 87{ 13194139533312 68630377364883 13194139533312 68630377364883 } 88{ 17592186044416 91507169819844 17592186044416 17592186044416 } 89{ 26388279066624 137260754729766 26388279066624 89 } 90{ 35184372088832 205891132094649 35184372088832 35184372088832 } 91{ 52776558133248 274521509459532 52776558133248 96889010407 } 92{ 70368744177664 411782264189298 70368744177664 70368744177664 } 93{ 105553116266496 617673396283947 105553116266496 617673396283947 } 94{ 140737488355328 823564528378596 140737488355328 140737488355328 } 95{ 211106232532992 1235346792567894 211106232532992 19073486328125 } 96{ 281474976710656 1853020188851841 281474976710656 281474976710656 } 97{ 422212465065984 2470693585135788 422212465065984 97 } 98{ 562949953421312 3706040377703682 562949953421312 562949953421312 } 99{ 844424930131968 5559060566555523 844424930131968 5559060566555523 } 100{ 1125899906842624 7412080755407364 1125899906842624 1125899906842624 }