现在的位置: 首页 > 综合 > 正文

zjut 1027 大数的乘法

2012年12月05日 ⁄ 综合 ⁄ 共 540字 ⁄ 字号 评论关闭
#include "iostream"
#include "string"
using namespace std;

int main()
{
	string str;
	int a, size, temp1;
	while (cin >> str >> a)
	{
		string ans = "";
		if (a == 0)
			cout << "0" << endl;
		else
		{
			size = str.size();
			int temp2, temp3 = 0;//temp2为两个数相乘的积,temp3为进位数!
			for (int i = size - 1; i >= 0; i--)
			{
				temp1 = str[i] - 48;//将字母转化为数字
				temp2 = temp1 * a + temp3;//相乘得出积
				if (temp2 >= 10)
				{
					temp3 = temp2 / 10;//取进位数
					temp2 = temp2 % 10;//得出个位数
				}
				else//如果temp2没有大于10,就将进位数归0
				{
					temp3 = 0;
				}
				ans += (temp2 + 48);
			}
			if (temp3 != 0)//对最后一位相乘的数进行判断,如果有进位数的,需要加入字符串中,否则,不加!
			    ans += temp3 + 48;
			int length = ans.size();
			for (int j = length-1; j >= 0; j--)
			     cout << ans[j];
			cout << endl;
		}
	}
}

 

抱歉!评论已关闭.