大数乘法 poj2389
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 14972 | Accepted: 7695 |
Description
FJ asks that you do this yourself; don't use a special library function for the multiplication.
Input
Output
Sample Input
- 11111111111111
- 1111111111
Sample Output
- 12345679011110987654321
题意:输入两个大数,输出它们相乘的结果。
代码:
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #define MAX 10000
- using namespace std;
- typedef struct bignum //定义大数类型
- {
- bignum(){memset(arr,0,sizeof(arr));length=0;} //初始化成员变量
- int arr[MAX*2];
- int length;
- }Bignum;
- char s[MAX];
- char t[MAX];
- Bignum atoi(char *s) //字符串转换为大数类型
- {
- Bignum res;
- int slen=strlen(s);
- for(int k=slen-1;k>=0;k--)
- {
- res.arr[k]=s[k]-'0';
- }
- res.length=slen;
- return res;
- }
- //大数相乘
- Bignum quickmul(Bignum a,Bignum b)
- {
- Bignum res; //存放结果
- for(int i=0;i<a.length;i++)
- {
- for(int j=0;j<b.length;j++)
- {
- res.arr[i+j+1]+=a.arr[i]*b.arr[j]; //将a,b按位相乘
- }
- }
- res.length=a.length+b.length; //记得长度要更新
- //处理进位
- int temp=0; //temp表示进位
- for(int i=res.length-1;i>=0;i--) //从后往前处理
- {
- int sum=res.arr[i]+temp;
- res.arr[i]=sum%10;
- temp=sum/10;
- }
- if(temp) //如果处理到最高位依然有进位,(左->右==>>高位->低位)
- res.arr[0]=temp;
- if(res.arr[0]==0) //如果res.arr[0]为0,把这个0去掉
- {
- for(int i=0;i<res.length-1;i++)
- res.arr[i]=res.arr[i+1];
- res.length--;
- }
- return res;
- }
- //输出大数
- void print(Bignum b)
- {
- for(int i=0;i<b.length;i++)
- cout<<b.arr[i];
- cout<<endl;
- }
- int main()
- {
- while(cin>>s>>t)
- {
- Bignum a=atoi(s);
- Bignum b=atoi(t);
- print(quickmul(a,b));
- }
- return 0;
- }
大数乘法 poj2389的更多相关文章
- 51nod 1027大数乘法
题目链接:51nod 1027大数乘法 直接模板了. #include<cstdio> #include<cstring> using namespace std; ; ; ; ...
- [POJ] #1001# Exponentiation : 大数乘法
一. 题目 Exponentiation Time Limit: 500MS Memory Limit: 10000K Total Submissions: 156373 Accepted: ...
- 用分治法实现大数乘法,加法,减法(java实现)
大数乘法即多项式乘法问题,求A(x)与B(x)的乘积C(x),朴素解法的复杂度O(n^2),基本思想是把多项式A(x)与B(x)写成 A(x)=a*x^m+b B(x)=c*x^m+d 其中a,b,c ...
- HDOJ-1042 N!(大数乘法)
http://acm.hdu.edu.cn/showproblem.php?pid=1042 题意清晰..简单明了开门见山的大数乘法.. 10000的阶乘有35000多位 数组有36000够了 # i ...
- 51 Nod 1027 大数乘法【Java大数乱搞】
1027 大数乘法 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出2个大整数A,B,计算A*B的结果. Input 第1行:大数A 第2行:大数B (A,B的长度 ...
- 51 Nod 1028 大数乘法 V2【Java大数乱搞】
1028 大数乘法 V2 基准时间限制:2 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 给出2个大整数A,B,计算A*B的结果. Input 第1行:大数A 第2行:大数B (A ...
- hdu_1042(模拟大数乘法)
计算n! #include<cstring> #include<cstdio> using namespace std; ]; int main() { int n; whil ...
- (母函数 Catalan数 大数乘法 大数除法) Train Problem II hdu1023
Train Problem II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- 大数乘法|2012年蓝桥杯B组题解析第六题-fishers
(9')大数乘法 对于32位字长的机器,大约超过20亿,用int类型就无法表示了,我们可以选择int64类型,但无论怎样扩展,固定的整数类型总是有表达的极限!如果对超级大整数进行精确运算呢?一个简单的 ...
随机推荐
- bzoj 1293: [SCOI2009]生日礼物 问题转化 + 性质分析 + 滚动数组优化
Description 小西有一条很长的彩带,彩带上挂着各式各样的彩珠.已知彩珠有N个,分为K种.简单的说,可以将彩带考虑为x轴,每一个彩珠有一个对应的坐标(即位置).某些坐标上可以没有彩珠,但多个彩 ...
- python的jieba分词
# 官方例程 # encoding=utf-8 import jieba seg_list = jieba.cut("我来到北京清华大学", cut_all=True) print ...
- class一些内置方法
一. __getattribute__ class Foo: def __init__(self,x): self.x=x def __getattr__(self, item): print('执行 ...
- [luogu4053 JSOI2007] 建筑抢修 (贪心 优先队列)
传送门 题目描述 小刚在玩JSOI提供的一个称之为"建筑抢修"的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者.但是T部落的基地里已经有N个建筑设施受到了严重的损伤 ...
- React 手稿 - Component state
Component state 实例: import React, { PureComponent } from 'react'; export default class extends PureC ...
- 参数化取值策略Random
1.Random+Each iteration,跟顺序读取的结果唯一不同的就是这里是随机读取,取值是每次迭代取值 2.Random+Each occurrence,随机取值更新方式 3.R ...
- C#中的文本乱码问题
文本乱码问题 //提供一种解决C#文本乱码的解决思路 //写入使用: string str; str = this.menu.Text; string fname = Application.Star ...
- java书籍推荐:《Java SE 6 技術手册》
Java SE 6 技術手册 或 Java SE 6 技術手册 Java SE 6 技術手册 為什麼選擇用 Markdown?仅仅是單純把文件又一次排版太無聊了,不如趁這個機會學些新東西.所以我就藉 ...
- android继续探索Fresco
我们接着上文继续说,上篇博客中我们已经知道了Fresco怎么用,也知道了它的非常多属性.可是非常多时候xml文件是不能满足你的要求的.这就须要你在代码中动态的改变显示的内容,今天我们就来探索一下怎样在 ...
- Wing IDE配置空格取代tab缩进+护眼背景色
打开Wing IDE后,进入"编辑"列的"偏好设置"页面,如图1所看到的: 图1 设置用4个spaces取代tab, 如图2所看到的 图2 设置保护眼睛的绿色, ...