10 条题解
-
7
我们考虑到这题的数据只有 ,那么,我们考虑小学时老师教你的:
你有 个苹果,然后你又拿到了 个苹果,最后你有 个苹果,所以 那加法就完成了(代码中的
ushort
是unsigned short
)short $(ushort x, ushort y) { return std::string().append(x, '.').append(y, '.').length(); }
那么减法呢?我们知道,,在计算机中,,so,,调用之前写的加法就好:
short _(short x, short y) { y = ~y; return $($(x, reinterpret_cast<ushort&>(y)), 1); }
最后乘法,还是考虑小学的时候老师教你的:
就是 个 相加。
还是用
string
。我们往一个空的string
里面塞 次长度为 的字符串,然后就好了。
但是我们发现一个问题:我们既不能for (int i = 0;i < y;i++)
,也不能while (y--)
。这可怎么办呢?还是用string
。我们每循环一次就往一个初始为空的字符串里塞一个字符,这个串有多长我们就循环了多少次。然后,乘法也被淦掉了:int X(short x, short y) { std::string str = ""; std::string tt = std::string().append(x, ' '); std::string res = ""; while (str.append(1, ' ').length() <= y) { res.append(tt); } return res.length(); }
最后是完整代码:
#include <iostream> #include <string> #define ushort unsigned short short $(ushort x, ushort y) { return std::string().append(x, '.').append(y, '.').length(); } short _(short x, short y) { y = ~y; return $($(x, reinterpret_cast<ushort&>(y)), 1); } int X(short x, short y) { std::string str = ""; std::string tt = std::string().append(x, ' '); std::string res = ""; while (str.append(1, ' ').length() <= y) { res.append(tt); } return res.length(); } int main() { int x, y; std::cin >> x >> y; std::cout << $(x, y) << ' ' << _(x, y) << ' ' << X(x, y) << std::endl; }
信息
- ID
- 246
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- (无)
- 递交数
- 252
- 已通过
- 58
- 上传者