#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 ≤ 。
输出格式
一行一个整数,表示新的乘法法则下 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;
};
之后,就可以让两个字符串变量按照本题的意思那样相乘,返回结果了。请按照用这个方法完成本题。