#include <stdio.h>
#define MAX_DIGITS 50 // 配列の要素数を定義
// 3の累乗を計算し、配列resultに格納する関数
void power3(unsigned long result[]) {
result[0] = 1; // 初期値は3^0 = 1
for (int i = 1; i <= 99; i++) {
unsigned long carry = 0; // 桁上がりを保存する変数
for (int j = 0; j < MAX_DIGITS; j++) {
unsigned long temp = result[j] * 3 + carry;
result[j] = temp % 10000000; // 7桁ごとに分ける
carry = temp / 10000000; // 桁上がり
}
// 各ステップの結果を出力
print_result(result);
}
}
// 計算結果を表示する関数
void print_result(unsigned long result[]) {
int started = 0; // 最初の非ゼロ桁を見つけるためのフラグ
for (int i = MAX_DIGITS - 1; i >= 0; i--) {
if (started) {
printf("%07lu", result
[i
]); // 7桁ゼロ埋めで表示 } else if (result[i] != 0) {
printf("%lu", result
[i
]); // 最初の非ゼロ桁はゼロ埋めしない started = 1;
}
}
}
int main() {
unsigned long result[MAX_DIGITS] = {0}; // 配列を0で初期化
power3(result); // 3の累乗を計算
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIE1BWF9ESUdJVFMgNTAgIC8vIOmFjeWIl+OBruimgee0oOaVsOOCkuWumue+qQoKLy8gM+OBrue0r+S5l+OCkuioiOeul+OBl+OAgemFjeWIl3Jlc3VsdOOBq+agvOe0jeOBmeOCi+mWouaVsAp2b2lkIHBvd2VyMyh1bnNpZ25lZCBsb25nIHJlc3VsdFtdKSB7CiAgICByZXN1bHRbMF0gPSAxOyAgLy8g5Yid5pyf5YCk44GvM14wID0gMQoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IDk5OyBpKyspIHsKICAgICAgICB1bnNpZ25lZCBsb25nIGNhcnJ5ID0gMDsgIC8vIOahgeS4iuOBjOOCiuOCkuS/neWtmOOBmeOCi+WkieaVsAogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgTUFYX0RJR0lUUzsgaisrKSB7CiAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgdGVtcCA9IHJlc3VsdFtqXSAqIDMgKyBjYXJyeTsKICAgICAgICAgICAgcmVzdWx0W2pdID0gdGVtcCAlIDEwMDAwMDAwOyAgLy8gN+ahgeOBlOOBqOOBq+WIhuOBkeOCiwogICAgICAgICAgICBjYXJyeSA9IHRlbXAgLyAxMDAwMDAwMDsgIC8vIOahgeS4iuOBjOOCigogICAgICAgIH0KCiAgICAgICAgLy8g5ZCE44K544OG44OD44OX44Gu57WQ5p6c44KS5Ye65YqbCiAgICAgICAgcHJpbnRmKCJuPSAlMmQ6ICIsIGkpOwogICAgICAgIHByaW50X3Jlc3VsdChyZXN1bHQpOwogICAgfQp9CgovLyDoqIjnrpfntZDmnpzjgpLooajnpLrjgZnjgovplqLmlbAKdm9pZCBwcmludF9yZXN1bHQodW5zaWduZWQgbG9uZyByZXN1bHRbXSkgewogICAgaW50IHN0YXJ0ZWQgPSAwOyAgLy8g5pyA5Yid44Gu6Z2e44K844Ot5qGB44KS6KaL44Gk44GR44KL44Gf44KB44Gu44OV44Op44KwCiAgICBmb3IgKGludCBpID0gTUFYX0RJR0lUUyAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgaWYgKHN0YXJ0ZWQpIHsKICAgICAgICAgICAgcHJpbnRmKCIlMDdsdSIsIHJlc3VsdFtpXSk7ICAvLyA35qGB44K844Ot5Z+L44KB44Gn6KGo56S6CiAgICAgICAgfSBlbHNlIGlmIChyZXN1bHRbaV0gIT0gMCkgewogICAgICAgICAgICBwcmludGYoIiVsdSIsIHJlc3VsdFtpXSk7ICAvLyDmnIDliJ3jga7pnZ7jgrzjg63moYHjga/jgrzjg63ln4vjgoHjgZfjgarjgYQKICAgICAgICAgICAgc3RhcnRlZCA9IDE7CiAgICAgICAgfQogICAgfQogICAgcHJpbnRmKCJcbiIpOyAgLy8g5pyA5b6M44Gr5pS56KGMCn0KCmludCBtYWluKCkgewogICAgdW5zaWduZWQgbG9uZyByZXN1bHRbTUFYX0RJR0lUU10gPSB7MH07ICAvLyDphY3liJfjgpIw44Gn5Yid5pyf5YyWCiAgICBwb3dlcjMocmVzdWx0KTsgIC8vIDPjga7ntK/kuZfjgpLoqIjnrpcKCiAgICByZXR1cm4gMDsKfQoK