課題提出などで、長いコードより短いコードのほうが提出が楽とされる場合があります。今回は「power」関数に相当するコードです。いわゆるべき乗を効率の良いループで計算するプログラムです。
- #include<stdio.h>
- main(){
- int a,n,v;
- scanf("%d%d",&a,&n);
- for(v=1;n>0;v*=n%2?a:1,a*=a,n/=2);
- printf("%d\n",v);
- }
以下がプログラム本体です。非常にシンプルで分かりやすいです。もちろん、アルゴリズム的にも洗練されており、単純に掛け算を乗数だけ繰り返すものでは有りません。
ただし、組み込み型のint変数を使っているので巨大な数はオーバーフローしますので注意です。 一応 2の30乗まで計算できます。
2
30
1073741824
このような計算結果です。