扩展水仙花数c语言有多组测试数据

扩展水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次方之和等于它本身。
。 要求编写程序,输出所有扩展水仙花数。

输入格式:
首先输入一个整数T(1<=T<10),表示测试组数;每组测试在一行上输入一个正整数N(3<=N<=7)。

输出格式:
对于每组测试,按递增顺序输出所有扩展水仙花数,每个数字占一行。

输入样例:
1
3
输出样例:
153
370
371
407


#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
    int n, *narr;
    scanf("%d", &n);
    narr = (int *)calloc(n, sizeof(int));
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &narr[i]);
    }

    for (int i = 0; i < n; i++) //组
    {
        int start = pow(10, narr[i] - 1);
        int end = pow(10, narr[i]) - 1;
        for (int j = start; j <= end; j++) //数
        {
            int sum = 0, nx = j, x;
            while (nx > 0)
            {
                x = nx % 10;
                sum +=  pow(x, narr[i]);
                nx /= 10;
            }
            if (sum == j)
            {
                printf("%d\n", j);
            }
        }
    }

    return 0;
}