Problem G: 新型乘法运算
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 235 Solved: 141
Description
定义Integer类,只有一个int类型的属性value。包括如下成员函数:
1. void setValue(int): 设置value为参数的值。
2. int getValue():获取value的值。
3. 重载乘法运算。新的乘法定义为:对于数值n,如果乘数是m,那么将n重复m次形成一个新的数。如:34 * 3 = 343434。注意:34 * 1 = 34。
4. 重载=运算符。
Input
输入有多行,第1行是Integer类的对象M的属性值。
之后的第2行N表示后面还有N行输入,每行输入是一个正整数,表示对M的乘数。
Output
N个新的Integer对象的值,每个是M的值乘以相应的乘数。假定所有的输出都不会溢出。
Sample Input
11012345678910
Sample Output
1111111111111111111111111111111111111111111111111111111
HINT
Append Code
#include <bits/stdc++.h>
using namespace std;
class Integer
{
public:
int value;
Integer(int a=0):value(a){}
void setValue(int a){value=a;}
int getValue(){return value;}
friend Integer operator*(Integer &p,int q)
{
stringstream ss;
string s1;
string s2;
ss<<p.value;//int转化为string
ss>>s1;
s2=s1;
while(--q)
{
s2+=s1;//字符串的拼接用'+'运算符
}
ss.clear();//清空ss缓冲区
int n;
ss<<s2;//string转化为int
ss>>n;
Integer Int(n);
return Int;
}
int operator=(const Integer &q)//'='只能重载为成员函数
{
int n;
this->value=q.value;
}
};
int main()
{
Integer M, N;
int a, n, m;
cin>>a;
M.setValue(a);
cin>>n;
while (n--)
{
cin>>m;
N = M * m;
cout<<N.getValue()<<endl;
}
return 0;
}