#include <iostream>

#include <cstring>

using namespace std;

#define null 0

#define MAXN 51

//大数相乘

char *big_cheng(char line1[], char line2[])

{

short s1[MAXN], s2[MAXN], s[MAXN];//s1,s2:两个乘数;s:乘积的结果

int i, j, k, c;

int len1, len2, len;

len1 = strlen(line1);

len2 = strlen(line2);

len = len1 + len2;//初步确定乘积的长度

for(i = len1 - 1; i >= 0; i--)

{

s1[i] = line1[len1 - i -1] - '0';//将字符串转化为整型,并反着存放

}

for(i = len2 - 1; i >= 0; i--)

{

s2[i] = line2[len2 - i - 1] - '0';

}

memset(s, 0, sizeof(short) * (MAXN - 1));//s数组初始化

for(i = 0; i <= len1 -1; i++)

for(j = 0; j <= len2 -1; j++)

s[i + j] = s[i + j] + s1[i] * s2[j];//逐位相乘         //核心所在

for(i = 0, c = 0; i <= len - 1;i++)//处理进位

{

k = s[i] + c;

s[i] = k % 10;

c = k / 10;

}

for(i = len - 1; i >= 0; i--)

if(s[i] != 0)break;//处理多余的零

len = i + 1;

char *line;//注意只有指针才可以返回去,不能定义成数组

line = new char[len + 1];

if(len == 0)

{

line[0] = 0 + '0';

line[1] = '\0';//字符串的结束标志

}

else

{

for(i = 0; i <= len - 1; i++)

line[i] = s[len - i - 1] + '0';

line[len] = '\0';//字符串的结束标志

}

return line;

}

int main()

{

char line1[MAXN], line2[MAXN];

while(cin >> line1 >>line2)

{

cout << big_cheng(line1, line2) << endl;

}

return 0;

}

大数相乘算法C++版的更多相关文章

  1. leetcode 43 Multiply Strings 大数相乘

    感觉是大数相乘算法里面最能够描述.模拟演算过程的思路 class Solution { public String multiply(String num1, String num2) { if(nu ...

  2. java版大数相乘

    在搞ACM的时候遇到大数相乘的问题,在网上找了一下,看到了一个c++版本的 http://blog.csdn.net/jianzhibeihang/article/details/4948267 用j ...

  3. Karatsuba乘法--实现大数相乘

    Karatsuba乘法 Karatsuba乘法是一种快速乘法.此算法在1960年由Anatolii Alexeevitch Karatsuba 提出,并于1962年得以发表.此算法主要用于两个大数相乘 ...

  4. POJ 2389 Bull Math(水~Java -大数相乘)

    题目链接:http://poj.org/problem?id=2389 题目大意: 大数相乘. 解题思路: java BigInteger类解决 o.0 AC Code: import java.ma ...

  5. Linux C/C++ 编程练手 --- 大数相加和大数相乘

    最近写了一个大数相乘和相加的程序,结果看起来是对的.不过期间的效率可能不是最好的,有些地方也是临时为了解决问题而直接写出来的. 可以大概说一下相乘和相加的解决思路(当然,大数操作基本就是两个字符串的操 ...

  6. Strassen 矩阵相乘算法(转)

    偶尔在算法课本上面看到矩阵相乘的算法,联想到自己曾经在蓝桥杯系统上曾经做过一道矩阵相乘的题目,当时用的是普通的矩阵相乘的方法,效率极低,勉强通过编译.所以决定研究一下Strassen矩阵相乘算法,由于 ...

  7. Java 大数相乘、大数相加、大数相减

    思路来源:: https://blog.csdn.net/lichong_87/article/details/6860329 /** * @date 2018/6/22 * @description ...

  8. KMP算法-Python版

                               KMP算法-Python版 传统法: 从左到右一个个匹配,如果这个过程中有某个字符不匹配,就跳回去,将模式串向右移动一位.这有什么难的? 我们可以 ...

  9. 华为上机测试题(大数相乘-java)

    PS:这个不是自己写的,测试OK,供参考. /** * 大数相乘 */ public class BigData { public static void main(String[] args) { ...

随机推荐

  1. Java 开发环境部署

    1.下载Java开发环境工具包JDK,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载后,双击jdk ...

  2. Scanner类总结

    1.构造器 Scanner(File source) Scanner(InputStream source) Scanner(String source) 参考:http://blog.sina.co ...

  3. 推荐——Monkey《大话 app 测试——Android、iOS 应用测试指南》

    <大话移动——Android与iOS应用测试指南> 京东可以预购啦!http://item.jd.com/11495028.html 当当网:http://product.dangdang ...

  4. js confirm()方法的使用方法实例

    今天学习了js 中confirm的使用方法,confirm() 方法用于显示一个带有指定消息和 OK 及取消按钮的对话框. 如果用户点击确定按钮,则 confirm() 返回 true.如果点击取消按 ...

  5. Notepad++中NppExec的使用之一:基本用法

    一直用NPP,很长时间了,最近才学习它的各种插件,这篇文章是根据NppExec的用户指南写的.很多地方是翻译的,但不全是翻译,同时也有些东西没有翻译. 一.何为NppExec 简单的说,这个插件可以让 ...

  6. java 21 - 4 字符流的文件复制操作以及简化

    既然字节流可以复制文件,那么字符流当然也有. 同样的思路: 数据源: a.txt -- 读取数据 -- 字符转换流 -- InputStreamReader目的地: b.txt -- 写出数据 -- ...

  7. 关联:objc_getAssociatedObject和objc_setAssociatedObject使用

    为UIButton的category添加属性 UIButton+subTitle.h #import <UIKit/UIKit.h> #import <objc/runtime.h& ...

  8. 在matlab中进行遥感影像地理坐标的相互转换

    在matlab中进行图像处理,一般使用的都是图像本地坐标,以左上角(1,1)开始.处理完成后,如果要将结果在带地理坐标的遥感影像中显示,或者需要输出成shp文件,就需要涉及到本地坐标和地理坐标的转换, ...

  9. 如何清洗 Git Repo 代码仓库

    git prune 如何清洗 Git Repo 代码仓库       在腾讯云上创建您的SQL Cluster>>> »   相信不少团队的代码仓库 Git Repo 变得越来越大. ...

  10. ios 指南针

    指南针图片  IBOutlet UIImageView *compassView 1 #import "ViewController.h" #import <CoreLoca ...