大数相乘 51nod 1027 水题

给出2个大整数A,B,计算A*B的结果。

Input

第1行:大数A
第2行:大数B
(A,B的长度 <= 1000,A,B >= 0)

Output

输出A * B

Input示例

123456
234567

Output示例

28958703552

把两个数倒序放在数组里,然后算第一个数乘以一到九的值再通过位数去加在一起具体看程序

 1 #include <iostream>
 2 using namespace std;
 3 #include<string.h>
 4 #include<set>
 5 #include<stdio.h>
 6 #include<math.h>
 7 #include<queue>
 8 #include<map>
 9 #include<algorithm>
10 #include<cstdio>
11 #include<cmath>
12 #include<cstring>
13 #include <cstdio>
14 #include <cstdlib>
15 #include<stack>
16 #include<vector>
17 int a[1010];
18 int b[1010];
19 int c[10][10100];
20 int d[1010000];
21 char a1[1010];
22 char b1[1010];
23 int lena,lenb;
24 int  cheng(int n)
25 {
26     int TM=0;
27     int i;
28     for(i=0;i<lena||TM!=0;i++)
29     {
30         c[n][i]=(a[i]*n+TM)%10;
31         TM=(a[i]*n+TM)/10;
32         //cout<<TM<<"_"<<endl;
33     }
34     //for(--i;i>=0;i--)
35         //cout<<c[n][i];
36     //cout<<endl;
37 }
38 int jia(int n,int x)
39 {
40     int TM=0;
41     int i;
42     int j;
43     for(i=0,j=x;c[n][i]!=-1;i++,j++)
44     {
45         int temp=(TM+c[n][i]+d[j]);
46         d[j]=temp%10;
47         TM=temp/10;
48     }
49     if(TM!=0)
50         d[j++]=1;
51     return j;
52 }
53 int main()
54 {
55             memset(a,0,sizeof(a));
56     memset(b,0,sizeof(b));
57     memset(c,-1,sizeof(c));
58     memset(d,0,sizeof(d));
59     cin>>a1>>b1;
60     lena=strlen(a1);
61     lenb=strlen(b1);
62     int add=0;
63     for(int i=lena-1;i>=0;i--)
64         a[add++]=a1[i]-‘0‘;
65     add=0;
66      for(int i=lenb-1;i>=0;i--)
67         b[add++]=b1[i]-‘0‘;
68     for(int i=1;i<10;i++)
69         cheng(i);
70     for(int i=0;i<lenb-1;i++)
71         jia(b[i],i);
72     int temp=jia(b[lenb-1],lenb-1);
73     for(int i=temp-1;i>=0;i--)
74         cout<<d[i];
75     cout<<endl;
76     return 0;
77 }

时间: 2024-12-28 11:23:00

大数相乘 51nod 1027 水题的相关文章

51nod 博弈论水题

51nod1069 Nim游戏 有N堆石子.A B两个人轮流拿,A先拿.每次只能从一堆中取若干个,可将一堆全取走,但不可不取,拿到最后1颗石子的人获胜.假设A B都非常聪明,拿石子的过程中不会出现失误.给出N及每堆石子的数量,问最后谁能赢得比赛. 例如:3堆石子,每堆1颗.A拿1颗,B拿1颗,此时还剩1堆,所以A可以拿到最后1颗石子. /*对于某个局面(a1,a2,...,an),若a1^a2^...^an<>0,一定存在某个合法的移动,将ai改变成ai'后满足a1^a2^...^ai'^..

大数--几道水题,用来学学JAVA

几道水题,练习一下JAVA写大数 poj2305  Basic remains 大数可以直接用非十进制读入,读入的数在变量中是十进制的 输出的时候要先用BigInteger的toString方法转换为相应的进制 1 import java.math.*; 2 import java.util.*; 3 class Main 4 { 5 public static void main(String[] args) 6 { 7 Scanner cin = new Scanner(System.in)

ACM大赛题 【C++大数相乘】

题     目: 大数相乘,我们常常会遇见几百位长的数字之间相乘的编程题,例如在算法中,ACM大赛题中,下面就是大数相乘的详细过程. 思      路: 模拟相乘法 举例说明: 123*789=97047 原理展示: 计算机计算: . C++源代码: 结果展示:

poj水题-1001 一个简单的大数乘幂算法实现

说到底就是一个大数乘幂运算,小数点后零.明白大数乘幂算法直接搞. 这里就有几个问题: 1.幂位数小可以用二进制容器表示(取模更好,但我是为了练习STL) 2.n位大数用string表示,外加一个int型表示小数点位置 3.字符串×字符串用小学竖式乘法算法就行,注意补零.位数多时两个string两个string地加. 代码长,但理解容易,大数乘法,加法函数很多都能重用. 1 #include <iostream> 2 #include <vector> 3 #include <

51nod 1027大数乘法

题目链接:51nod 1027大数乘法 直接模板了. 1 #include<cstdio> 2 #include<cstring> 3 using namespace std; 4 const int N = 1001; 5 const int DLEN = 4; 6 const int mod = 10000; 7 int alen, blen; 8 int ans_len; 9 char a1[N], b1[N]; 10 int a[600], b[600]; 11 int a

HDU1250_Hat&#39;s Fibonacci【大数】【水题】

Hat's Fibonacci Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 7854    Accepted Submission(s): 2551 Problem Description A Fibonacci sequence is calculated by adding the previous two members th

HDU-1042-N!(Java大法好 &amp;&amp; HDU大数水题)

N! Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 64256    Accepted Submission(s): 18286 Problem Description Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N! Input One N in o

4.7-4.9补题+水题+高维前缀和

题目链接:51nod 1718 Cos的多项式  [数学] 题解: 2cosx=2cosx 2cos2x=(2cosx)^2-2 2cos3x=(2cosx)^3-3*(2cosx) 数归证明2cos(nx)能表示成关于2cosx的多项式,设为f(n) f(1)=x,f(2)=x^2-2(其中的x就是2cosx) 假设n=1~k时均成立(k>=3) 当n=k+1时 由cos((k+1)x)=cos(kx)cos(x)-sin(kx)sin(x) cos((k-1)x)=cos(kx)cos(x)

HDU 4006 The kth great number (基本算法-水题)

The kth great number Problem Description Xiao Ming and Xiao Bao are playing a simple Numbers game. In a round Xiao Ming can choose to write down a number, or ask Xiao Bao what the kth great number is. Because the number written by Xiao Ming is too mu