乘法
题目描述
给出 multiply
函数的定义,使得 multiply(n, m)
和 multiply(n)(m)
都可以计算 n
和 m
的乘积。
关于输入
共一行,为两个空格分隔的正整数 n、m,取值范围在 ±105 内。
关于输出
共两行,都是 n 和 m 的乘积。
参考答案
#include <iostream>
int multiply(int a, int b) {
return a * b;
}
auto multiply(int a) {
return [=](int b) { return a * b; };
}
int main() {
int n, m;
std::cin >> n >> m;
std::cout << multiply(n, m) << std::endl;
std::cout << multiply(n)(m) << std::endl;
}
#include <iostream>
int multiply(int a, int b) {
return a * b;
}
struct Multiplier {
int a;
int operator()(int b) {
return a * b;
}
};
auto multiply(int a) {
return Multiplier{a};
}
int main() {
int n, m;
std::cin >> n >> m;
std::cout << multiply(n, m) << std::endl;
std::cout << multiply(n)(m) << std::endl;
}
#include <iostream>
class multiply {
private:
int a, b;
public:
multiply(int a, int b = 0) : a{a}, b{b} {}
multiply& operator()(int b) {
this->b = b;
return *this;
}
friend std::ostream& operator<<(std::ostream& os, const multiply& m) {
return os << m.a * m.b;
}
};
int main() {
int n, m;
std::cin >> n >> m;
std::cout << multiply(n, m) << std::endl;
std::cout << multiply(n)(m) << std::endl;
}
#include <iostream>
class multiply {
private:
int a, b;
public:
multiply(int a, int b = 0) : a{a}, b{b} {}
multiply& operator()(int b) {
this->b = b;
return *this;
}
operator int() const {
return a * b;
}
};
int main() {
int n, m;
std::cin >> n >> m;
std::cout << multiply(n, m) << std::endl;
std::cout << multiply(n)(m) << std::endl;
}