开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第21天,点击查看活动详情
[传智杯 #5 初赛] A-莲子的软件工程学
题目背景
在宇宙射线的轰击下,莲子电脑里的一些她自己预定义的函数被损坏了。
对于一名理科生来说,各种软件在学习和研究中是非常重要的。为了尽快恢复她电脑上的软件的正常使用,她需要尽快地重新编写这么一些函数。
题目描述
具体而言,给定两个整数 ,保证 。莲子要实现这样一个函数 来将 的符号转移到 上。
具体而言,。其中,
换而言之:
- 如果 是正数,那么 ;
- 如果 是负数,那么 。
如果使用一个三维坐标系描述 ,则应当如下图所示:
你只需输出 的值。
输入格式
- 共一行两个整数 。
输出格式
- 共一行一个整数 的值。
样例 #1
样例输入 #1
-1 2
样例输出 #1
1
样例 #2
样例输入 #2
0 -4
样例输出 #2
0
样例 #3
样例输入 #3
-12345 -54321
样例输出 #3
-12345
提示
对于全部数据,保证 在 位有符号整型范围内,并且 。
题目分析
这题是传智杯B组的第一题,题意非常的简单,但是有个坑实在是太狗了,就是提示中的“保证a,b在32位有符号的整数类型”,很多人直接就是int肝了,但是因为比赛的时候服务器炸了,导致有很多人疯狂的提交,所以有以下的事情(doge):
传智杯,他真的我哭死(doge)
思路分析
现在有两种思路做,一种是用字符串来存,一开始我以为是时的32次方位,于是我就果断用string了
另一种就是使用long long,大整数来存,比较方便
string代码
#include<iostream>
#include<string>
using namespace std;
int main()
{
string a, b;
cin >> a >> b;
if (a[0] == '0') {
cout << "0";
}
else {
int pos = a.find('-');
if (pos != -1)a.replace(0, 1, "");
if (b[0] == '-') {
cout << "-";
}
cout << a;
}
return 0;
}
long long代码
#include<iostream>
#include<cmath>
using namespace std;
typedef long long LL;
int main()
{
LL a, b;
cin >> a >> b;
if (a == 0) {
cout << "0";
}
else {
if (b > 0)cout << abs(a);
else cout << "-" << abs(a);
}
return 0;
}
PS:简单是简单,但是真的很坑,有的哥们爆int快哭了(大哭.jpg),虽然我一遍过~