• poj2389-Bull Math(大整数乘法)


    一,题意:
      大整数乘法模板题
    二,思路:
      1,模拟乘法(注意"逢十进一")
      2,倒序输出(注意首位0不输出)
    三,步骤:
      如:555 x 35 = 19425 
         5 5 5        5 5 5
         x   3 5        x    3 5
        -----------   ==>     ----------
          2 7 7 5       25 25 25
         + 1 6 6 5        +15 15 15
      -------------      -----------------
          1 9 4 2 5     15 40 40 25
                逢十进一
                ---------------
                1   9   4   2   5

     1 #include<iostream>
     2 #include<cstring>
     3 using namespace std;
     4 const int N = 10010; 
     5 char a[N],b[N];
     6 int ans[N];  //记录结果的数组 
     7 int digit;   //记录结果的位数 
     8 
     9 //模拟乘法的过程 
    10 void MUL(int len , int len2){
    11     int l = 0 ;
    12     for(int i = len2 - 1 ; i >= 0 ; i--){
    13         int k = l ;
    14         int m = l ;
    15         for(int j = len - 1 ; j >= 0 ; j--){
    16             ans[k++] = (b[i]-'0')*(a[j]-'0') + ans[m++]; //储存的时候为倒序
    17         }
    18         l++;    //乘完一位,往后移一位相加 
    19         digit=k;  //记录位数
    20     }
    21     //进行"逢十进一"操作
    22     for(int i = 0 ; i<=digit ; i++){
    23         if(ans[i]>=10){
    24             ans[i+1] = ans[i+1] + ans[i] / 10 ; 
    25             ans[i] %=10 ; 
    26         }
    27     }
    28 }
    29 
    30 //输出操作
    31 void print(){
    32     if(ans[digit]!=0)  //判断首位是否为0 
    33         cout<<ans[digit];
    34     for(int i = digit-1 ; i>=0 ; i-- ){ //倒序输出 
    35         cout<<ans[i];
    36     }
    37     cout<<endl;
    38 }
    39 
    40 int main(){
    41     while(cin>>a>>b){
    42         int len = strlen(a);
    43         int len2 = strlen(b);
    44         memset(ans,0,sizeof(ans));//初始化ans[]为0 
    45         MUL(len,len2);
    46         print();
    47     }
    48     return 0;
    49 }
    View Code

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    hdu3486 Interviewe (二分+线段树求区间最值)
    hdu2473 JunkMail Filter(并查集)
    hdu3290 The magic apple tree (dfs)
    hdu2610 Sequence one (dfs) &&hdu2611 Sequence two
    hdu1598 find the most comfortable road (枚举+并查集)
    hdu3635 Dragon Balls
    hdu2821 Pusher
    hdu1558 Segment set
    hdu 2514 Another Eight Puzzle
    url传递中文的解决方案
  • 原文地址:https://www.cnblogs.com/My-Sunshine/p/4860755.html
Copyright © 2020-2023  润新知