乘法

题目描述

给出 multiply 函数的定义,使得 multiply(n, m)multiply(n)(m) 都可以计算 nm 的乘积。

关于输入

共一行,为两个空格分隔的正整数 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;
}