大数据乘法

一:代码实现

//大数据乘法运算
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int BigDataMul(char *num01, char *num02)
{
	int res = 0, i = 0, j = 0;
	int length01 = 0, length02 = 0, totallength = 0;
	if(NULL == num01 || NULL == num02) {
		res = -1;
		return res;
	}
	length01 = strlen(num01);
	length02 = strlen(num02);
	totallength = length01 + length02;
	int *presult = (int *)malloc(sizeof(int) * totallength);
	memset(presult, 0, sizeof(int) * totallength);
	if(NULL == presult) {
		res = -2;
		return res;
	}
	//累乘
	for(i = 0; i < length01; i++)	{
		for(j = 0; j < length02; j++) {
			//将第一位空出来,以防产生进位,注意这个第0位置,表示最高位
			presult[i + j + 1] += (num01[i] - ‘0‘) * (num02[j] - ‘0‘);
		}
	}
	//累加 倒序
	for(i = totallength - 1; i >= 0; i--) {
		//大于10 表示产生进位
		if(presult[i] >= 10) {
			presult[i-1] += presult[i] / 10;//取出进位
			presult[i] %= 10;//取出个位数
		}
	}
	i = 0;
	//去除前面的0,因为可能没有产生进位,前面的可能是0
	while(0 == presult[i]) {
		i++;
	}
	//可能与0相乘的话,结果全为0
	if(i == totallength + 1) {
		printf("0\n");
		goto IsZero;
	}
	char *plastresult = (char *)malloc(sizeof(char) * totallength);
	memset(plastresult, 0, sizeof(char) * totallength);
	if(NULL == plastresult) {
		res = -2;
		return res;
	}
	for(j = 0; i < totallength; i++, j++) {
		plastresult[j]	= presult[i] + ‘0‘;
	}
	for(i = 0; i < totallength; i++) {
		printf("%c",plastresult[i]);
	}
	free(plastresult);
	plastresult = NULL;
IsZero:
	free(presult);
	presult = NULL;
	return res;
}

int main(int argc, char *argv[])
{
	BigDataMul("22222","9");
	return 0;
}

  

  

时间: 2024-08-27 08:55:27

大数据乘法的相关文章

【C/C++学院】0814-引用高级、引用高级增加/auto自动变量自动根据类型创建数据/Bool/Enum/newdelete全局/大数据乘法与结构体/函数模板与auto/宽字符本地化/inline

引用高级.引用高级增加 #include<iostream> #include<stdlib.h> // int a[10] // int (&ra)[10] // int a[2][5] // int (&ra)[2][5] void main1() { int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int(&ra)[10](a);//引用就是给原来的变量有一个别名同一个地址 int i = 0; for (

C++实现大数据乘法

1.测试环境 vs2013 windows 7 采用累乘的方式实现,然后再统一的进位,最后将其在转换为字符串,输出. 程序代码: #define _CRT_SECURE_NO_WARNINGS #include<iostream> struct BigDataMutliplie { private: char data_a[100]; char data_b[100]; int len_a; int len_b; bool negative; bool detect_data() { len_

大数据的乘法实现——C语言

1大数据乘法的算法思路: 输入两个字符串,得到结果,例如:123456789*123456789: 思路:1)首先 123456789*1 = 9   18  27  36  45  54  63  72  81       123456789*2 = 9   18  27  36  45  54  63  72  81                   123456789*3 = 9   18  27  36  45  54  63  72  81                      

大数据相乘

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace BigNumberMultiplication { class Program { static void Main(string[] args) { try { int first = 4916; int second = 12345; long result = first * second; Cons

java中不用BigInteger实现大数据的乘法操作

昨天看到一个题目:计算1234!,不能用BigInteger类 众所周知阶乘的数据会很大,常用的int和long型根本不够用.一般想到的只有BigInteger类,但是题目中明确说了不能用,所以只能想其它办法. 阶乘其实就是乘法的递归,这道题目可以简化为如何实现大数据的乘法,int和long型都装不下的数据,只能用String来表示,所以只要实现了两个String表示数字的乘法就可实现题目要求. 想想我们自己手算乘法的步骤,基本都是列一个竖式,分别按位相乘,进位的数相加..只要用程序将这个过程模

大数据的乘法

//大数据相乘,具体的算法思想见c #define _CRT_SECURE_NO_WARNINGS //vs2013去掉安全检查 #include <stdlib.h> #include <string.h> #include <iostream> using namespace std; class big_data { public: void init_string() { cout << "str1 = "; cin >&g

华为内部关于大数据的一篇好文

科技的进步在很多的时候总会超出我们的想象,如果未来我们一个人拥有的电脑设备超过现在全球现在计算能力的总和,一个人产生的数据量超过现在全球数据 量的总和,甚至你的宠物小狗产生的信息量都超过现在全球数据量的总和,世界会发生什么呢?阅读本文,大数据(Big Data)会告诉你一个充满奇幻色彩的世界. 一.详解时髦词汇:大数据 似乎一夜之间,大数据(Big Data)变成一个IT行业中最时髦的词汇. 首先,大数据不是什么完完全全的新生事物,Google的搜索服务就是一个典型的大数据运用,根据客户的需求,

一文读懂机器学习,大数据/自然语言处理/算法全有了……

原文地址 http://www.open-open.com/lib/view/open1420615208000.html http://www.cnblogs.com/subconscious/p/4107357.html 引论 在本篇文章中,我将对机器学习做个概要的介绍.本文的目的是能让即便全然不了解机器学习的人也能了解机器学习.而且上手相关的实践.这篇文档也算是 EasyPR开发的番外篇.从这里開始.必须对机器学习了解才干进一步介绍EasyPR的内核.当然,本文也面对一般读者.不会对阅读有

大数据的管理艺术

数据分析应用是真正能够直接解决企业问题的,是显露在外可以直接观察的部分,但是在这之下有很大部分支撑数据分析应用的就是数据管理技术.数据分析应用需要一整套的处理和加工过程,数据就是原材料,需要把数据有序地存储和管理起来.然后是数据的整理.清洗.集成,这个过程主要由数据工程师(DataEngineer)来完成,最后由数据科学家借助数据分体的工具和平台根据业务问题等实际需要采用不同的算法和方法等进行数据分析.大数据管理其实就是支撑数据应用的平台的管理技术 最早数据存放在文件里,没有中间件进行数据管理,