UVa 10106 - Product

本文介绍了一种使用数组模拟实现大整数乘法的方法。通过逆向存储数字,并逐位相乘累加的方式,有效地处理了超出常规整型变量表示范围的大数运算问题。

题目:大整数乘法。

分析:简单题、模拟。利用数组模拟即可,逆向储存方便计算。

备注:╮(╯▽╰)╭今天rp过低啊,各种水题无限WA。

#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>

using namespace std;

int a[305];
int b[305];
int c[605];

int main()
{
	char temp[305];
	while ( cin >> temp ) {
		int la = strlen( temp );
		for ( int i = la-1 ; i >= 0 ; -- i )
			a[la-1-i] = temp[i] - '0';
		cin >> temp;
		int lb = strlen( temp );
		for ( int i = lb-1 ; i >= 0 ; -- i )
			b[lb-1-i] = temp[i] - '0';
		for ( int i = 0 ; i < 600 ; ++ i )
			c[i] = 0;
		for ( int i = 0 ; i < la ; ++ i ) {
			for ( int j = 0 ; j < lb ; ++ j )
				c[i+j] += a[i]*b[j];
			for ( int j = 0 ; j < 600 ; ++ j )
				if ( c[j] > 9 ) {
					c[j+1] += c[j]/10;
					c[j] %= 10;
				}
		}
		int end = 600;
		while ( end >= 1 && !c[end] ) -- end;
		while ( end >= 0 ) printf("%d",c[end --]);
		printf("\n");
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值