#include<stdlib.h>
#include<stdio.h>
#include <string.h>
void multiply(char *a,char *s)
{
int i,j;
int d[130]={0};
char res[130]={0};
for(i=0;i<strlen(a);i++)//a 的下标()
for(j=0;j<strlen(s);j++)//s的下标
if(i+j<(strlen(s)+strlen(a)))
{
d[i+j]+=(a[i]-'0')*(s[j]-'0');
}
int inc=0;
for(i=(strlen(s)+strlen(a))-2;i>=0;i--){
if(d[i]>9)
{
if(i==0)
inc=d[i]/10;
else
d[i-1]+=d[i]/10;
d[i]=d[i]%10;
}
res[i]=d[i]+'0';
}
memset(s,0,sizeof(s));
if(inc!=0)
{
sprintf(s,"%d",inc);
}
strcat(s,res);
}
void exponentiation(char* str,int n)
{
char tmp[130]={0};
strcpy(tmp,str);
int i=0;
for(i=0;i<n-1;i++)
{
multiply(tmp,str);
}
}
void res
高精度求幂运算
最新推荐文章于 2023-03-02 21:13:53 发布