洛谷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\)

posted @ 2024-08-07 19:40  Nightmares_oi  阅读(20)  评论(0编辑  收藏  举报