zoukankan      html  css  js  c++  java
  • 四:大数运算-乘法运算

    问题:大数-乘法运算
    题目描述

    请计算两个整数相乘(数的范围为:0 <= num < 10 ^ 100)
    输入
    两个整数
    输出
    一个整数
    样例输入
    10000000
    10000000
    样例输出
    100000000000000

      1 #include<stdio.h>
      2 #include<string.h>
      3 #define M 1000000
      4 int Inter_Sum[M];
      5 int Inter_jie[M];
      6 int g;
      7 //char Inter_Char[M];
      8 void fun(int str1[],int str[],int s,int p){
      9     int t,m=0,i=0,two=0;
     10     int k=0;
     11     /*printf("1
    ");
     12     for( int j=s-1;j>=0;j--){
     13             
     14         printf("%d ",str1[j]);
     15     }
     16     printf("
    ");
     17     printf("2
    ");
     18         for( int j=p;j>=0;j--){
     19         printf("%d ",str[j]);
     20     }
     21     printf("
    ");*/
     22     while(i<s){
     23             if(two<=p)
     24          t=(str1[i])+(str[two])+m;
     25          
     26          else {
     27              t=(str1[i])+m;
     28          }
     29          //printf("t=%d i=%d two=%d
    ",t,i,two);
     30          //printf("str1[i]=%d str[two]=%d
    ",str1[i],str[two]);
     31         if(t<10){
     32             Inter_Sum[k]=t;
     33             m=0;
     34         }else{
     35             Inter_Sum[k]=t%10;
     36             m=t/10;
     37         }    
     38         k++;
     39         two++;
     40         if(i==s-1&&m!=0)Inter_Sum[k++]=m; 
     41         i++;
     42     }
     43     
     44     //printf("
    ");
     45     g=k;
     46 }
     47 void f(char str1[],char str2[]){
     48     int t,p=0,i=strlen(str1);
     49     //int Inter_jie[10000][10000];
     50     memset(Inter_Sum,-1,sizeof(Inter_Sum));
     51     int k,j,l;
     52     int index=0;
     53     while(1){
     54         for(k=strlen(str2)-1;k>=0;k--){
     55             int m=0;
     56             int p=strlen(str2)-1-k;
     57             //printf("str2[k]=%d
    ",str2[k]-48);
     58             l=p;
     59             //printf("l=%d
    ",l);
     60             while(l--)Inter_jie[l]=0;
     61             for(j=strlen(str1)-1;j>=0;j--){
     62                 t=(str1[j]-48)*(str2[k]-48)+m;
     63                 //printf("t=%d
    ",t);
     64                 if(t<10){
     65                     Inter_jie[p]=t;
     66                     m=0;
     67                 }else{
     68                     Inter_jie[p]=t%10;
     69                     m=t/10;
     70                 }
     71                 //printf("t=%d
    ",t);
     72                 p++;
     73                 if(j==0&&m!=0)Inter_jie[p++]=m; 
     74             }
     75         
     76         /*for( int j=p-1;j>=0;j--){
     77             
     78         printf("%d ",Inter_jie[j]);
     79     }
     80     printf("
    ");*/
     81             while(Inter_Sum[index++]!=-1);
     82             fun(Inter_jie,Inter_Sum,p,index-2);
     83             //printf("index=%d
    ",index);
     84         }
     85         //printf("p=%d
    ",p);
     86         break;
     87     }
     88     //printf("index=%d
    ",index);
     89     
     90 }
     91 int main(){
     92     
     93     char str1[M];
     94     char str2[M];
     95     //memset(Inter_Sum,0,sizeof(Inter_Sum));
     96     int i=0,j=0;
     97     scanf("%s %s",str1,str2);
     98     str1[strlen(str1)]='';
     99     str2[strlen(str2)]='';
    100     //printf("%d %d
    ",strlen(str1),strlen(str2));
    101     if(strlen(str1)>=strlen(str2))
    102     f(str1,str2);
    103     else f(str2,str1);
    104     for(j=g-1;j>=0;j--){
    105         printf("%d",Inter_Sum[j]);
    106     }
    107     return 0;
    108 }
  • 相关阅读:
    es6箭头函数
    微信小程序入门
    浏览器常见错误代码
    nginx学习
    windows下mongodb安装与使用整理
    mongodb简单的增删改查
    github入门到上传本地项目
    Robomongo
    对象(面向对象、创建对象方式、Json)
    代码编辑器——Visual Studio Code
  • 原文地址:https://www.cnblogs.com/yuming226/p/8146093.html
Copyright © 2011-2022 走看看