/*********************************************/ /* 3^99を計算するプログラム 多倍長整数 ******/ /*********************************************/ #include #include using namespace std; #define N 8 //解を格納する配列の要素数 #define ULIMIT 99 //累乗の繰り返し回数 #define RESLIMIT 100000000UL //7桁の符号なし整数最大値+1 void printresult(unsigned long result[]); void power3(unsigned long result[]); int main() { unsigned long result[N]={0} ; //計算結果の初期化 result[0]=1;//3の0乗 for(int i=1;i<=ULIMIT;i++) { power3(result); cout << "n=" <=0;j--) { if (result[j]==0)cout <<" "; else cout << result[j]<<" "; } cout<<"\n"; } /**********************************/ /* power3()関数 */ /* 3をかける */ /*********************************/ void power3(unsigned long result[]) {int i; unsigned long midress[N]={0};//3倍の計算結果 for(i=0; i=RESLIMIT){ if(i!=N-1) {//桁あふれ midress[i+1]+=midress[i]/RESLIMIT ; } else {//多倍長整数が桁あふれ cout <<"多倍長整数が桁あふれしてしまいました。\n"; exit(1);//異常終了 } midress[i]=midress[i]%RESLIMIT; } } //結果のresult[]への格納 for(i=0;i