zoukankan      html  css  js  c++  java
  • 【高精度】幸运之门

    问题 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
    如有错误,请指正,感谢!
  • 相关阅读:
    ixgb 中断
    libvirt
    docker 查看虚拟机xml
    什么是可串行化MVCC
    算法题:实现 strStr()函数
    Python库 numpy基础内容学习笔记
    python3.6+torch1.2实现Sentiment Analysis(数据集MR)
    人工智能能力提升指导总结
    深度学习入门篇01(Tensorflow-gpu的安装)
    走进PEP8——代码规范
  • 原文地址:https://www.cnblogs.com/scott527407973/p/9319795.html
Copyright © 2011-2022 走看看