大数与小数相乘算法

简介:
#include <stdio.h>
#include <string.h>

/************************************************************************/
/* 功能:大数乘以小数
/* 参数:source:字符型数组,作为被乘数,位数小于500位
/*       result:存放计算结果,并返回
/*       m:作为乘数,限定m的取值范围为:小于1000000
/************************************************************************/
void Multiply(char *source, char *result, int m)
{

	int i, j, temp, length;
	int flag = 0, carryBit = 0;
    char tempArr[1000]; // 最大数为1000位

	length = strlen(source);
    
	// 将x1x2x3...xn 转换成 xn...x3x2x1,且为数值
	for (i = length - 1, j = 0; i >= 0; i--)
	{
		tempArr[j++] = source[i] - '0';
	}

	for (i = 0; i < length; i++)
	{
		temp = tempArr[i] * m + carryBit;

		tempArr[i] = temp % 10;
		carryBit = temp / 10;
	}
    while (carryBit)
    {
		tempArr[length++] = carryBit % 10;
		carryBit /= 10;
    }
    
	// 将结果转换成字符型数组,并将结果正序返回
	for (i = 0; i < length; i++)
	{
		result[length - i - 1] = tempArr[i] + '0';
	}

	result[length] = '\0';
}

int main()
{
	char source[500];
	int m;
	char result[1000];

	scanf("%d%s", &m, source);
	Multiply(source, result, m);

	printf("%s\n", result);

	return 0;
}

目录
相关文章
|
2月前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1 算法训练 区间k大数查询
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-1 算法训练 区间k大数查询
16 0
|
8月前
|
算法
基础算法(大数操作 前缀和 差分)
基础算法(大数操作 前缀和 差分)
45 0
|
10月前
|
分布式计算 算法 搜索推荐
【经典算法问题 一】海量数据中找出前k大数(topk问题)
【经典算法问题 一】海量数据中找出前k大数(topk问题)
112 0
|
11月前
|
算法 C++ Python
【每日算法Day 82】面试经典题:求第K大数,我写了11种实现,不来看看吗?
【每日算法Day 82】面试经典题:求第K大数,我写了11种实现,不来看看吗?
|
算法
经典算法题-大数相加&数字字符串相加
leetcode:415. 字符串相加题链 这是一个校招面试时候,手写频率比较高的一个算法题,这里给大家分享三种方法: 一个常规解法,两个清奇的思路
算法零基础——大数四则运算
算法零基础——大数四则运算
算法零基础——大数四则运算
|
存储 算法 C语言
二十个一乘以二十个二等于多少?C语言经典算法设计之大数乘法
二十个一乘以二十个二等于多少?C语言经典算法设计之大数乘法
1629 0
|
1月前
|
机器学习/深度学习 算法 生物认证
基于深度学习的人员指纹身份识别算法matlab仿真
基于深度学习的人员指纹身份识别算法matlab仿真
|
24天前
|
传感器 算法 计算机视觉
基于肤色模型和中值滤波的手部检测算法FPGA实现,包括tb测试文件和MATLAB辅助验证
该内容是关于一个基于肤色模型和中值滤波的手部检测算法的描述,包括算法的运行效果图和所使用的软件版本(matlab2022a, vivado2019.2)。算法分为肤色分割和中值滤波两步,其中肤色模型在YCbCr色彩空间定义,中值滤波用于去除噪声。提供了一段核心程序代码,用于处理图像数据并在FPGA上实现。最终,检测结果输出到&quot;hand.txt&quot;文件。
|
1月前
|
机器学习/深度学习 算法 计算机视觉
基于yolov2深度学习网络的视频手部检测算法matlab仿真
基于yolov2深度学习网络的视频手部检测算法matlab仿真