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