#P1917. 运算符重载.乘法

运算符重载.乘法

题目描述

做厌了乘法计算题的佳佳,自创了一种新的乘法运算法则。在这套法则里,A×B 等于一个取自 A 、一个取自 B 、的所有数字对的乘积的和。

例如:123×45 等于 1×4+1×5+2×4+2×5+3×4+3×5=54 。

本题的任务是,对于给定的数 A 和 B ,用新的乘法法则计算 A×B 的值。

输入格式

一行两个用一个空格隔开的整数 A 和 B ,1 ≤ A 、B ≤ 109{10}^9

输出格式

一行一个整数,表示新的乘法法则下 A×B 的值。

样例

123 45
54

分析

这条题并不难,我们只是用这条题来练习我们学到的新语法。

我们都知道两个字符串是不能直接乘的,两个字符也不能直接乘。所以,以前我们会对字符做转换,先转换成数字,再来乘。

用老方法,答案大致是这样的:

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string s1,s2;
	int ans=0,t1,t2;

	cin>>s1>>s2;

	for(int i=0;i<s1.size();i++)
	{
		t1 = s1[i] - '0';
		for(int j=0;j<s2.size();j++)
		{
			t2 = s2[j] - '0';
			ans += t1*t2;
		}
	}
	
	printf("%d",ans);		
	return 0;
}

两个 string 之间原本是没有 * 运算的,我们现在可以定义一个。

int operator * (string a,string b){
	int res = 0; // res 是 result 的简写 
	for(int i=0;i<a.size();i++)
		for(int j=0;j<b.size();j++)
			res += (a[i]-'0')*(b[j]-'0');
	
	return res; 
};

之后,就可以让两个字符串变量按照本题的意思那样相乘,返回结果了。请按照用这个方法完成本题。