zoukankan      html  css  js  c++  java
  • 高精度乘法

    1127: 高精度高精度乘法

    题目描述

    输入两个高精度正整数m,nm,n都在200位以内),输出它们的乘积。

    输入

    两行,每行一个整数

    输出

    一行,一个整数

    样例输入

    5

    10

    样例输出

    50

     1 #include<iostream>
     2 #include<cstring>
     3 using namespace std;
     4 char a[1001],b[1001];
     5 long long lena,lenb,i,j,n[10001];
     6 int main()
     7 {
     8     cin>>a>>b;
     9     lena=strlen(a);
    10     lenb=strlen(b);
    11     for(i=0;i<=lena-1;i++) for(j=0;j<=lenb-1;j++) n[i+j+1]+=(int(a[i])-48)*(int(b[j])-48);//诸位相乘保存在对应的位置然后加
    12     for(i=lena+lenb-1;i>1;i--)
    13        if(n[i]>=10)
    14        {
    15            n[i-1]+=n[i]/10;
    16            n[i]%=10;//处理进位问题
    17        }
    18     for(i=1;i<=lena+lenb-1;i++) cout<<n[i];
    19 } 

    **高精度乘法,相乘之后的位数就是两个数的位数相加减一(代买中ij不是他们的位数),根据竖式可得出是相乘之后,对应位数的数字相加。相加之后处理进位问题。

  • 相关阅读:
    javascript生成二维码
    Gulp--Less
    自动构建工具Gulp
    上传文件返回数据提示下载
    svg
    Grunt--Less
    node.js--Less
    浏览器端Less
    HTML5表单
    node.js模块依赖及版本号
  • 原文地址:https://www.cnblogs.com/rax-/p/8526224.html
Copyright © 2011-2022 走看看