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
    如有错误,请指正,感谢!
  • 相关阅读:
    必须要狠狠的喷一把苹果
    机械键盘四种轴试用体验
    linux终端快捷键
    挥别我在软件开发的第一个公司
    mysql 查询优化
    oracle 用户创建这个挺靠谱
    重置了下系统好多关于mysql密码的文章都很渣拷分好的备用
    关于WebView的复习
    Bpmx实施经验
    使用Nexus私服代理其他maven仓库(jitpack、jcenter)
  • 原文地址:https://www.cnblogs.com/scott527407973/p/9319795.html
Copyright © 2011-2022 走看看