fork download
  1. #include <stdio.h>
  2. #define MAX_DIGITS 8 // 配列の要素あたりの最大桁数
  3. #define MAX_ELEMENTS 8 // 配列の要素数
  4. #define BASE 10000000 // 10^7, 7桁分の値を表すための基数
  5.  
  6. // 結果を表示する関数
  7. void print_result(unsigned long result[]) {
  8. int i, started = 0;
  9. for (i = MAX_ELEMENTS - 1; i >= 0; i--) {
  10. if (started || result[i] != 0) {
  11. if (started)
  12. printf("%07lu", result[i]); // 7桁の0埋め出力
  13. else
  14. printf("%lu", result[i]); // 先頭の要素は0埋めしない
  15. started = 1;
  16. }
  17. }
  18. if (!started)
  19. printf("0");
  20. printf("\n");
  21. }
  22.  
  23. int main() {
  24. unsigned long result[MAX_ELEMENTS] = {0}; // 結果を格納する配列
  25. result[0] = 1; // 初期値1
  26.  
  27. for (int n = 0; n < 30; n++) { // 繰り返し回数を30回と仮定
  28. // 各要素を3倍にする
  29. for (int i = 0; i < MAX_ELEMENTS; i++) {
  30. result[i] *= 3;
  31. }
  32.  
  33. // 繰り上げ処理
  34. for (int i = 0; i < MAX_ELEMENTS - 1; i++) {
  35. if (result[i] >= BASE) {
  36. result[i + 1] += result[i] / BASE;
  37. result[i] %= BASE;
  38. }
  39. }
  40.  
  41. // 結果表示
  42. print_result(result);
  43. }
  44.  
  45. return 0;
  46. }
  47.  
Success #stdin #stdout 0s 5288KB
stdin
Standard input is empty
stdout
3
9
27
81
243
729
2187
6561
19683
59049
177147
531441
1594323
4782969
14348907
43046721
129140163
387420489
1162261467
3486784401
10460353203
31381059609
94143178827
282429536481
847288609443
2541865828329
7625597484987
22876792454961
68630377364883
205891132094649