C语言计算任意数的任意次方

时间:2023-12-14 21:13:26

C语言计算任意数的任意次方

#include "stdio.h"
#include"stdlib.h"
#define max 500
void yiwei(int *a,int n,int m)
{
for(int i=m-;i>=;i--)
{
if(i-n>=)
{
a[i]=a[i-n];
//a[i-n]=0;
}
else
a[i]=;
}
}
void main()
{
int a[max],bb[max],b[max][max],c[max],m,n,temp,i,j,k;
scanf("%d%d",&m,&n);
printf("提示:默认结果不超过500位,如果超过500位则出错!\n");
printf("%d的%d次方:",m,n);
for(i=;i<max;i++)
{
a[i]=;
c[i]=;
for(j=;j<max;j++)
b[i][j]=;
}
if(m<)
a[]=m;
else
{
temp=m;
j=;
while(temp!=)
{
a[j]=temp%;
temp=temp/;
j++;
}
}
//////
//m=16;126
while (n>)
{
for(i=;i<max;i++)
for(j=;j<max;j++)
b[i][j]=;
for(i=;i<max;i++)
bb[i]=a[i]*m;
for(i=;i<max;i++)
if(bb[i]<)
b[i][]=bb[i];
else
{
temp=bb[i];
for(j=;j<max;j++)
{
b[i][j]=temp%;
temp=temp/;
}
}
for(i=;i<max;i++)
{
yiwei(b[i],i,max);
}
//右加
for(i=;i<max;i++)
{
for(j=;j<max;j++)
c[i]=c[i]+b[j][i];
}
//c移位
for(i=;i<max;i++)
{
if(c[i]>=)
{
temp=c[i];
j=i;
while(temp!=)
{
if(j==i)
c[j]=temp%;
else
c[j]=c[j]+temp%;
j++;
temp=temp/;
}
}
}
for(i=;i<max;i++)
{
a[i]=c[i];
c[i]=;
}
n--;
} for(i=max-;i>=;i--)
{
if(a[i]!=)
break;
}
for(;i>=;i--)
printf("%d",a[i]);
printf("\n");
system("pause");
}

本文出自 “阿凡达” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/702538