• 3117 高精度练习之乘法


    题目描述 Description

    给出两个正整数A和B,计算A*B的值。保证A和B的位数不超过500位。

    输入描述 Input Description

    读入两个用空格隔开的正整数

    输出描述 Output Description

    输出A*B的值

    样例输入 Sample Input

    3 12

    样例输出 Sample Output

    36

    数据范围及提示 Data Size & Hint

    两个正整数的位数不超过500位

    模拟乘法的运算。不过在此题中巧妙地先计算各位的值,得出结果后再在各位分析进位的方法,极大的提高了算法的效率。

    附AC代码:

     1 #include<iostream>
     2 #include<cstring>
     3 using namespace std;
     4 
     5 const int MAX=550;
     6 
     7 char al[MAX],bl[MAX];
     8 int a[MAX],b[MAX],c[MAX];
     9 
    10 
    11 int main(){
    12     while(cin>>al>>bl){
    13         memset(a,0,sizeof(a));
    14         memset(b,0,sizeof(b));
    15         memset(c,0,sizeof(c));
    16         int lena=strlen(al);
    17         int lenb=strlen(bl);
    18         for(int i=0;i<lena;i++){//逆向存入数组 
    19             a[lena-i]=al[i]-48;
    20         }
    21         for(int i=0;i<lenb;i++){
    22             b[lenb-i]=bl[i]-48;
    23         }
    24         int x=1,ans,t,k=0;
    25         for(int i=1;i<=lenb;i++){//先将各位的值保存在各个位数的位置 
    26             t=k;
    27             for(int j=1;j<=lena;j++){
    28                 c[t]+=a[j]*b[i];
    29                 t++;
    30             }
    31             k++;
    32             ans=t;
    33         }
    34         for(int i=0;i<ans;i++){//处理进位 
    35             while(c[i]>=10){
    36                 c[i]-=10;
    37                 c[i+1]++;
    38             }
    39         }
    40         if(c[ans]!=0){//判断首位是否为0 
    41             for(int i=ans;i>=0;i--){
    42                 cout<<c[i];
    43             }
    44         }
    45         else{
    46             for(int i=ans-1;i>=0;i--){
    47                 cout<<c[i]; 
    48             }
    49         }
    50         cout<<endl;
    51     }
    52     return 0;
    53 }
  • 相关阅读:
    web ERP前端技术选型
    poj1741 Tree 树的分治
    HDU4694 未AC
    zoj4100 Balanced Number 数位DP
    树的最小表示法 UVA 12489
    2013长沙网赛 I题 Grand Prix
    2013第八场多校
    2013第六场多校
    2013第五场多校
    ZOJ3724 树状数组+离线处理
  • 原文地址:https://www.cnblogs.com/Kiven5197/p/5678080.html
Copyright © 2020-2023  润新知