• 【高精度】幸运之门


    问题 L: 【高精度】幸运之门

    时间限制: 1 Sec  内存限制: 64 MB
    提交: 5  解决: 4
    [提交] [状态] [讨论版] [命题人:外部导入]

    题目描述

    一天,毛毛和怪怪在玩一个破译密码的游戏,他们发现:一根密码棒上的数字乘上另一根密码棒上的数字,就是打开通向另一王国的“幸运之门”的密码锁密码。
    如:123456×654321=80779853376,则80779853376就是一组有效的密码。
    当毛毛和怪怪收到两根密码棒上的数字后,最先算出密码的就可以打开“幸运之门”通向另一王国。
    请你帮毛毛编写一个程序,以最快速度算出密码。

    输入

    两行,每行一个正整数。

    输出

    一个正整数,为输入的两个正整数之积。

    样例输入

    123456
    654321
    

    样例输出

    80779853376
    

    提示

    100%的数据:结果的值<1×1050

    注意!!!一定不要忘记特判 s=="0"||t=="0"    否则会出现“16*0=00"的情况。

     1 #include <iostream>
     2 #include<string>
     3 using namespace std;
     4 string sa,sb;
     5 int a[10005],b[10005],c[100005];
     6 int main()
     7 {
     8     cin>>sa>>sb;
     9     if(sa=="0"||sb=="0")
    10     {
    11         cout<<"0"<<endl;
    12         return 0;
    13     }
    14     int la=sa.size(),lb=sb.size();
    15     for(int i=la-1;i>=0;i--)
    16         a[la-i-1]=sa[i]-'0';
    17     for(int i=lb-1;i>=0;i--)
    18         b[lb-i-1]=sb[i]-'0';
    19     for(int i=0;i<la;i++)
    20     {
    21         for(int j=0;j<lb;j++)
    22             c[i+j]+=a[i]*b[j];
    23     }
    24     for(int i=0;i<la+lb;i++)
    25         c[i+1]+=c[i]/10,c[i]%=10;
    26     if(c[la+lb-1])  cout<<c[la+lb-1];
    27     for(int i=la+lb-2;i>=0;i--)
    28         cout<<c[i];
    29     cout<<endl;
    30     return 0;
    31 }
    View Code
    如有错误,请指正,感谢!
  • 相关阅读:
    MES取所有部门的函数实例
    MES总结:CBF.Common 文件Net下的有类型转换
    LINQ to SQL 系列 如何使用LINQ to SQL插入、修改、删除数据
    c# abstract抽象类与继承类子类的构造函数_base
    C# 之泛型详解
    MVC6与Asp.net5
    MenuStrip菜单递归
    .net 下的MVCPager
    UVALive5461 UVA615 POJ1308 HDU1325 Is It A Tree?
    UVALive5461 UVA615 POJ1308 HDU1325 Is It A Tree?
  • 原文地址:https://www.cnblogs.com/scott527407973/p/9319795.html
Copyright © 2020-2023  润新知