数据量很大时 long long中间也会溢出 所以要拆分开来做
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 # include <stdio.h> 2 # include <string.h> 3 # define LL long long 4 5 LL i, len, n, m; 6 LL a[110]; 7 8 void f(int n) 9 { 10 for(i = 0; i < len; i++) 11 a[i] *= n; 12 for(i = 0; i < len+100; i++) 13 { 14 a[i+1] += a[i]/10; 15 a[i] %= 10; 16 } 17 for(i = len+100; i >= 0; i--) 18 { 19 if(a[i] != 0) 20 break; 21 } 22 len = i+1; 23 } 24 25 int main(void) 26 { 27 int p; 28 scanf("%d", &p); 29 while(p--) 30 { 31 scanf("%lld%lld", &n, &m); 32 if(m == 1) 33 printf(" ", n); 34 else if(n == 0) 35 printf("0 "); 36 else if(n == 1) 37 printf("1 "); 38 else if(n < 0) 39 { 40 if(m % 2 == 1) 41 printf("-"); 42 n = -n; 43 } 44 memset(a, 0, sizeof(a)); 45 a[0] = 1; 46 len = 1; 47 for(int i = 1; i <= m; i++) 48 f(n); 49 for(i = len-1; i >= 0; i--) 50 printf("%lld", a[i]); 51 printf(" "); 52 } 53 54 return 0; 55 }