洛谷P8869 莲子的软件工程学之警钟长鸣
洛谷P8869题解
摸鱼环节
[传智杯 #5 初赛] A-莲子的软件工程学
题目背景
在宇宙射线的轰击下,莲子电脑里的一些她自己预定义的函数被损坏了。
对于一名理科生来说,各种软件在学习和研究中是非常重要的。为了尽快恢复她电脑上的软件的正常使用,她需要尽快地重新编写这么一些函数。
题目描述
具体而言,给定两个整数 \(a,b\),保证 \(b\neq 0\)。莲子要实现这样一个函数 \(\operatorname{fun}(a,b)\) 来将 \(b\) 的符号转移到 \(a\) 上。
具体而言,\(\operatorname{fun}(a,b)=\operatorname{sgn}(b)\times |a|\)。其中,\(\operatorname{sgn}(b)=\begin{cases}1&b>0\\-1&b<0\end{cases}\)
换而言之:
- 如果 \(b\) 是正数,那么 \(\operatorname{fun}(a,b)=+|a|=|a|\);
- 如果 \(b\) 是负数,那么 \(\operatorname{fun}(a,b)=-|a|\)。
输入格式
- 共一行两个整数 \(a,b\)。
输出格式
- 共一行一个整数 \(\operatorname{fun}(a,b)\) 的值。
样例 #1
样例输入 #1
-1 2
样例输出 #1
1
样例 #2
样例输入 #2
0 -4
样例输出 #2
0
样例 #3
样例输入 #3
-12345 -54321
样例输出 #3
-12345
提示
对于全部数据,保证 \(a,b\) 在 \(32\) 位有符号整型范围内,并且 \(b \neq 0\)。
很明显我是来水写题解的,这道题我一看题目便以极快速度敲完代码,体验AC快乐,但结果是WA。(不愧是通过率最低的红题)接下来我就模拟下过程。
正片开始
发现题目中直接给到:
- 如果 \(b\) 是正数,那么 \(\operatorname{fun}(a,b)=+|a|=|a|\);
- 如果 \(b\) 是负数,那么 \(\operatorname{fun}(a,b)=-|a|\)。
于是完成代码之
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5;
int main()
{
int a,b;
cin>>a>>b;
if(b>0) cout<<abs(a);
else cout<<-abs(a);
return 0;
}
交上去发现居然没AC,仔细一看:
- 对于全部数据,保证 \(a,b\) 在 \(32\) 位有符号整型范围内,并且 \(b \neq 0\)。
如此细节,于是很快就AC了。
完整代码
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5;
int main()
{
ll a,b;
cin>>a>>b;
if(b>0) cout<<abs(a);
else cout<<-abs(a);
return 0;
}
十年OI一场空,不开longlong见祖宗。
看完点赞,养成习惯
\(\Downarrow\Downarrow\Downarrow\Downarrow\Downarrow\Downarrow\Downarrow\Downarrow\Downarrow\Downarrow\Downarrow\Downarrow\Downarrow\Downarrow\Downarrow\Downarrow\Downarrow\Downarrow\Downarrow\Downarrow\Downarrow\Downarrow\Downarrow\Downarrow\Downarrow\)