タイトル説明
(1 <= A、B <= 1000)の最後の3桁を求める整数A ^ B
エントリー
N、ある入力整数の最初の行は、テストケースは、2つの正の整数A、Bが与えられると、はn行の各行一例であるを表します
輸出
各テストケースのために、(先頭の0を含まない)A ^ Bの最後の三つの出力、別の行。
サンプル入力
2 2 3 12 6
サンプル出力
8 984
ヒント:1 errotその結果、オーバーフローへの配慮がないので、直接POW()関数を開始します
2 3の数を求めた後に、1000の番号を直接要求ビットの同様の数引き継ぐことができ、私の数は10にかかりました
多数3操作を法、各一回のモジュロ剰余を乗算し、その後、残りの結果を取ることができます
8 ^ 3〜7%、8%= 1 7 1 * 8%7 = 1 * 8%7 = 1
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(){
int num,a,b,ret=1;
scanf("%d",&num);
for (int i = 0; i < num; i++)
{
ret = 1;
scanf("%d%d",&a,&b);
for (int j = 0; j < b; j++)
{
ret *= a;
ret %= 1000;
}
printf("%d\n",ret);
}
}