洛谷P8869 蓮子的軟體工程學之警鐘長鳴

Nightmares_oi發表於2024-08-07

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

相關文章