poj2389-Bull Math(大整数乘法)
一,题意:
大整数乘法模板题
二,思路:
1,模拟乘法(注意"逢十进一")
2,倒序输出(注意首位0不输出)
三,步骤:
如:555 x 35 = 19425
5 5 5 5 5 5
x 3 5 x 3 5
----------- ==> ----------
2 7 7 5 25 25 25
+ 1 6 6 5 +15 15 15
------------- -----------------
1 9 4 2 5 15 40 40 25
逢十进一
---------------
1 9 4 2 5
#include<iostream>
#include<cstring>
using namespace std;
const int N = ;
char a[N],b[N];
int ans[N]; //记录结果的数组
int digit; //记录结果的位数 //模拟乘法的过程
void MUL(int len , int len2){
int l = ;
for(int i = len2 - ; i >= ; i--){
int k = l ;
int m = l ;
for(int j = len - ; j >= ; j--){
ans[k++] = (b[i]-'')*(a[j]-'') + ans[m++]; //储存的时候为倒序
}
l++; //乘完一位,往后移一位相加
digit=k; //记录位数
}
//进行"逢十进一"操作
for(int i = ; i<=digit ; i++){
if(ans[i]>=){
ans[i+] = ans[i+] + ans[i] / ;
ans[i] %= ;
}
}
} //输出操作
void print(){
if(ans[digit]!=) //判断首位是否为0
cout<<ans[digit];
for(int i = digit- ; i>= ; i-- ){ //倒序输出
cout<<ans[i];
}
cout<<endl;
} int main(){
while(cin>>a>>b){
int len = strlen(a);
int len2 = strlen(b);
memset(ans,,sizeof(ans));//初始化ans[]为0
MUL(len,len2);
print();
}
return ;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
poj2389-Bull Math(大整数乘法)的更多相关文章
- POJ2389 Bull Math【大数】
Bull Math Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15040 Accepted: 7737 Descri ...
- 【老鸟学算法】大整数乘法——算法思想及java实现
算法课有这么一节,专门介绍分治法的,上机实验课就是要代码实现大整数乘法.想当年比较混,没做出来,颇感遗憾,今天就把这债还了吧! 大整数乘法,就是乘法的两个乘数比较大,最后结果超过了整型甚至长整型的最大 ...
- POJ2389 Bull Math
/* POJ2389 Bull Math http://poj.org/problem?id=2389 高精度乘法 * */ #include <cstring> #include < ...
- POJ 1001 解题报告 高精度大整数乘法模版
题目是POJ1001 Exponentiation 虽然是小数的幂 最终还是转化为大整数的乘法 这道题要考虑的边界情况比较多 做这道题的时候,我分析了 网上的两个解题报告,发现都有错误,说明OJ对于 ...
- OpenJudge 2980 大整数乘法
链接地址:http://bailian.openjudge.cn/practice/2980/ 题目: 总时间限制: 1000ms 内存限制: 65536kB 描述 求两个不超过200位的非负整数的积 ...
- 大整数乘法python3实现
因为python具有无限精度的int类型,所以用python实现大整数乘法是没意义的,可是思想是一样的.利用的规律是:第一个数的第i位和第二个数大第j位相乘,一定累加到结果的第i+j位上,这里是从0位 ...
- [大整数乘法] java代码实现
上一篇写的“[大整数乘法]分治算法的时间复杂度研究”,这一篇是基于上一篇思想的代码实现,以下是该文章的连接: http://www.cnblogs.com/McQueen1987/p/3348426. ...
- JS实现大整数乘法(性能优化、正负整数)
本方法的思路为: 一:检查了输入的合法性(非空,无非法字符) 二:检查输入是否可以进行简单计算(一个数为 0,1,+1,-1) 三:去掉输入最前面可能有的正负符号,并判断输出的正负 四:将输入的值分成 ...
- 算法笔记_034:大整数乘法(Java)
目录 1 问题描述 2 解决方案 2.1 蛮力法 1 问题描述 计算两个大整数相乘的结果. 2 解决方案 2.1 蛮力法 package com.liuzhen.chapter5; import ...
随机推荐
- CPU的内部架构和工作原理 (转,相当不错)
http://blog.chinaunix.net/uid-23069658-id-3563960.html 一直以来,总以为CPU内部真是如当年学习<计算机组成原理>时书上所介绍的那样, ...
- 【Android学习】《Android开发视频教程》第二季笔记(未完待续)
视频地址: http://study.163.com/course/courseMain.htm?courseId=207001 课时22 Activity生命周期(一) 1.如何在一个应用中添加新 ...
- $.prop()和$.attr() 区别用法
都用于读取和设置DOM元素节点的属性 不同: $.attr()用于DOM元素本身的属性 $.prop()用于DOM节点对应的JS属性(源于DOM元素到JS对象的映射) 源于两者在jquery类库的实现 ...
- espcms特殊标签
内页banner图从后台调用分类图片 <div style="background:url({%$rootdir%}{%find:type class=$type.topid out= ...
- C# Bitmap deep copy
今天在研究一个关于 Bitmap deep copy 的问题, 经过一系列的查询,在StackOverFlow上面找到了答案,遂记录下来: public static Bitmap DeepCopyB ...
- cf593d
题意:给出一个有n(n<=200000)的树形图,每条边有一个权值.有两种操作,1是将一个边的权值变小, 2是给定两点a,b和一个值y,用y(long long范围内)依次除以两点之间的路径上的 ...
- this a a mark down test
*** this is title ''' code '''
- PHP实验三
1.输出下列语句地结果 <?php // while语句应用 $i = 1; while ( $i <= 20) { echo $i; if ( $i < 10 ) echo &qu ...
- go:defer
defer:延迟. 假设有调用函数A.被调用函数B,其关系如下: func A(){//调用函数 ... defer B()//被调用函数 ... return//B将延迟到return前执行 } * ...
- swap的应用两个数的交换
#include <stdio.h>//这儿表示的函数的输入输出头文件void swap(int x,int y);void swap_p(int *x,int *y);//表示调用一个方 ...