高低精度乘除法

直接每位相乘即可,再考虑最后进位,除法也考虑进位。

for(j=0;j<len;j++)
            a[i][j]=a[i-1][j]*(4*i-2);
        c=0;
        for(j=0;j<len;j++)
        {
            a[i][j]=a[i][j]+c;
            c=a[i][j]/10;
            a[i][j]=a[i][j]%10;
        }
        while(c!=0)
        {
            a[i][len++]=c%10;
            c=c/10;
        }
        c=0;
        for(j=len-1;j>=0;j--)
        {
            a[i][j]=10*c+a[i][j];
            c=a[i][j]%(i+1);
            a[i][j]=a[i][j]/(i+1);
        }
        for(j=len-1;j>=0;j--)
            if(a[i][j]!=0)break;
        len=j+1;
        l[i]=j+1;
大数取模
char s[200];
#define mod 10000010;
int main()
{   while(gets(s))
{   int k=strlen(s),sum=0;
  for(int i=0;i<k;i++)
  sum=(sum*10+s[i]-'0')%mod;    /当然要是担心sum还可能溢出,那就对里边再拆开来取余
  cout<<sum<<endl;
} }

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!

数论相关 Previous
博弈 Next