【题解提供者】吴立强
解法
思路
在所有基础类型中能存下两个 unsigned int 乘积的也就 unsigned long long 了,故直接转换类型相乘即可。
注意到可能乘积为负数,所以需要先判断符号再相乘输出即可。
代码展示
#include <iostream>
using namespace std;
int main() {
long long x, y; cin >> x >> y; /// int 存不下,unsigned long long 存不了负数
if(x == 0 || y == 0) cout << 0; /// 注意存在 0
else if((x > 0) ^ (y > 0)) { /// 判断是否一正一负
cout << '-';
cout << 1ull * abs(x) * abs(y);
} else {
cout << 1ull * abs(x) * abs(y);
}
return 0;
}
算法分析
程序时间复杂度为 O ( 1 ) O(1) O(1)。