zoukankan      html  css  js  c++  java
  • 大数乘法(适合k进制)

     1 #include<stdio.h>
     2 #include<string.h>
     3 #define N 10000
     4 void inv(char str[],int n)
     5 {
     6     int i,j;
     7     char temp;
     8     for(i=0,j=n-i-1; i<j; i++,j--)
     9         temp=str[i],str[i]=str[j],str[j]=temp;
    10 }
    11 char* bigX(char *str,char *ttr,int num)
    12 {
    13     int a,s[N],k,flag = 0;
    14     if(str[0]=='0'||ttr[0]=='0')
    15     {
    16         return "0";
    17     }
    18     if(str[0]=='-')
    19     {
    20         strcpy(str,str+1);
    21         flag++;
    22     }
    23     if(ttr[0]=='-')
    24     {
    25         strcpy(ttr,ttr+1);
    26         flag++;
    27     }
    28     int len1=strlen(str);
    29     int len2=strlen(ttr);
    30     inv(str,len1);
    31     inv(ttr,len2);
    32     for(int i=0; i<=len1+len2+100; i++)
    33         s[i]=0;
    34     for(int i=0; i<len1; i++)
    35         for(int j=0; j<len2; j++)
    36             s[i+j]=s[i+j]+(str[i]-'0')*(ttr[j]-'0');
    37     for(int i=0; i<=len1+len2+100; i++)
    38         if(s[i]>=8)
    39         {
    40             a=s[i]/num;
    41             s[i]=s[i]%num;
    42             s[i+1]=s[i+1]+a;
    43         }
    44     k=len1+len2;
    45     for(int i=k; i>0; i--)
    46         if(s[i]==0)
    47             k=i-1;
    48         else
    49             break;
    50     if(flag==1)
    51     {
    52         str[0]='-';
    53         for(int i=k,j=1; i>=0; i--,j++)
    54         {
    55             str[j]=s[i]+'0';
    56         }
    57     }
    58     else
    59     {
    60         for(int i=k,j=0; i>=0; i--,j++)
    61         {
    62             str[j]=s[i]+'0';
    63         }
    64     }
    65     return str;
    66 }
    67 int main()
    68 {
    69     char str[N],ttr[N];
    70     while(1)
    71     {
    72         if(scanf("%s%s",str,ttr)==EOF)
    73             break;
    74         puts(bigX(str,ttr,8));
    75         memset(str,0,sizeof(str));
    76         memset(ttr,0,sizeof(ttr));
    77     }
    78     return 0;
    79 }
  • 相关阅读:
    Excel表格函数逻辑排错
    MobaXterm体验最好的SSH客户端
    Excel中的常用函数
    Shell 知识点2020
    Linux 知识点2020
    Python知识点2020
    es6 模版字符串
    es6对象定义简写
    es6解构赋值
    ES6 let const关键字
  • 原文地址:https://www.cnblogs.com/xcantaloupe/p/7361647.html
Copyright © 2011-2022 走看看