zoukankan      html  css  js  c++  java
  • SDNU 1232.A*B Problem(高精度)

    这道题虽然数据很大,但是可以用数学的乘法运算来解决

    Description

    Calculate a*b

    Input

    Input contains multiple test cases.
    Each test case contains two number a and b (0<=a,b<=10^1000),

    Output

    Output a*b

    Sample Input

    12345678987654321 98765432123456789

    Sample Output

    1219326320073159566072245112635269

    Hint

    练习模拟大数乘法
    #include <cstdio>
    #include <iostream>
    #include <cmath>
    #include <string>
    #include <cstring>
    #include <algorithm>
    
    using namespace std;
    
    string a, b;
    int x[1000+8], y[1000+8], sum[1000000+8], t;
    int main()
    {
        while(cin >> a >> b)
        {
            int lena = a.size();
            int lenb = b.size();
            int lens = 0;
            memset(sum, 0, sizeof(sum));
            for(int i = 0; i<lena; i++)
                {
                    x[lena-i] = a[i]-48;//-48等于-'0',并且把这个字符串倒序输入数列X中
                }
            for(int i = 0; i<lenb; i++)
            {
                y[lenb-i] = b[i]-48;
            }
            for(int i = 1; i<=lena; i++)//像数学乘法一样,把所有的数都乘起来
            {
                t = 0;//记录要进的位数
                for(int j = 1; j <= lenb; j++)
                {
                    sum[i+j-1] += x[i]*y[j]+t;
                    t = sum[i+j-1]/10;
                    sum[i+j-1] %= 10;
                }
                sum[i+lenb] = t;
            }
            lens = lena+lenb;
            while(sum[lens] == 0 &&lens>1) lens--;
            for(int i = lens; i >= 1; i--)printf("%d", sum[i]);
            printf("
    ");
        }
        return 0;
    }
  • 相关阅读:
    Django 基础教程
    Python之路【第十七篇】:Django【进阶篇 】
    Python之路【第十六篇】:Django【基础篇】
    Python之路【第十五篇】:Web框架
    AngularJS 教程
    jQuery
    最小公倍数生成树
    51nod 1743 雪之国度
    codeforces 633F The Chocolate Spree
    hihocoder 1246 王胖浩与环
  • 原文地址:https://www.cnblogs.com/RootVount/p/10371456.html
Copyright © 2011-2022 走看看