//求13的100次方
#include<stdio.h>
#define N 1000
int main()
{
int i,j,cp,x,a[N],s;
a[N-1]=1; //数组最后一个元素值为1
s=N-2; //岗哨
for(i=1;i<101;i++){
cp=0;
for(j=N-1;j>s;j--){
x=a[j]*13+cp;//每一次这个位数上的值乘13
a[j]=x%10;//将新得到的位数值赋给a[i]
cp=x/10;//每次拆除个位,也是下一次加法运算的“进位”
}
while(cp){
a[s--]=cp%10;//将进位给最高位
cp=cp/10;//进位缩减(比如30,要进两次,所以控制循环进行缩减)
}
}
for(i=s+1;i<N;i++){
printf("%d",a[i]);
}
printf("\n");
return 0;
}
//数n的y次方
#include<stdio.h>
#define N 1000
int main()
{
int i,j,cp,x,a[N],s,n,y;
a[N-1]=1; //数组最后一个元素值为1
s=N-2; //岗哨
printf("底数和指数分别为:");
scanf("%d %d",&n,&y);
for(i=0;i<y;i++){
cp=0;
for(j=N-1;j>s;j--){
x=a[j]*n+cp;
a[j]=x%10;
cp=x/10;
}
while(cp){
a[s--]=cp%10;
cp=cp/10;
}
}
for(i=s+1;i<N;i++){
printf("%d",a[i]);
}
printf("\n");
return 0;
}
//求100!
#include<stdio.h>
#define N 1000
int main()
{
int i,j,cp,x,a[N],s;
a[N-1]=1; //数组最后一个元素值为1
s=N-2; //岗哨
for(i=1;i<101;i++){
cp=0;
for(j=N-1;j>s;j--){
x=a[j]*i+cp; //每个数的每位与i的成绩和进位数的和
a[j]=x%10; //存入数组中的数
cp=x/10; //进位数
}
while(cp){ //防止进位数多于两位 累乘后溢出
a[s--]=cp%10;
cp=cp/10;
}
}
for(i=s+1;i<N;i++){
printf("%d",a[i]);
}
printf("\n");
return 0;
}