c语言a的b次后四位

描述
求a的b次方后四位。

格式
输入格式
输入的第一行是T(不超过1000)。T表示测试部分的个数,每一部分都要求单独计算并按照要求输出结果。
接下来是每个测试部分。第一行给出a b,0 < a,b <= 100。

输出格式
对于每个测试部分,请输出每个问题的正确答案的最后四位,如果不足四位请前面补0。

样例
样例输入
2
2 1
3 10
样例输出
0002
9049


int main()
{
    int n=0;
    int a,b,sum=1;
    scanf("%d",&n);
    for(int i=0;i<n;++i)
    {
        sum=1;
        scanf("%d %d",&a,&b);
        while(b-- && (sum*=a));
        printf("%04d",sum%10000);
    }
    
    return 0;
}
#include<stdio.h>
void main()
{
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
        int x,y,k=1;
        scanf("%d%d",&x,&y);
        for(int j=1;j<=y;j++)
        {
            k *= y;
            k = k%10000;
        }
        printf("%04d\n",k);
    }

}

代码如下:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i,j,T;
    int *a,*b;
    long long s=1;
    //读入数据T
    scanf("%d",&T);
    a = (int *)malloc(sizeof(int)*T);
    b = (int *)malloc(sizeof(int)*T);
    //读入数据
    for(i=0;i<T;i++)
        scanf("%d%d",&a[i],&b[i]);

    //计算
    for (i=0;i<T;i++)
    {
        s = 1;
        for(j=1;j<=b[i];j++)
            s *= a[i];
        printf("%04d\n",s%10000);
    }
    

    free(a); a= 0;
    free(b); b=0;
    return 0;
}