小L的長方形

2021-09-26 03:47:07 字數 1980 閱讀 6337

題源:

時間限制: 1 sec  記憶體限制: 128 mb

題目描述

在數學課上,老師發給小l一根鐵絲,讓小l將這根鐵絲圍成乙個長方形。要求這個長方形的長是寬的3倍,並且計算它的面積。

輸入僅乙個整數a,表示鐵絲的長度(a≤10000)。

輸出輸出三個數,分別表示長方形的長、寬、面積。如果計算結果是整數,則輸出整數結果(沒有小數部分);如果不是,則保留三位小數。每個數之間用乙個空格隔開。

樣例輸入 copy

36
樣例輸出 copy

13.500 4.500 60.750
前言:這道題很明顯的簽到題了。但是我當時卻用來半個多小時還沒做出來,原因是對知識點理解地還不夠透徹,沒有用一種清晰的思路去分析叭。

考點:強制型別轉換

解題思路:首先,你能夠很明確地知道判斷要輸出的數是小數還是整數的關鍵是n%8是否等於0,寫好好這個條件之後,先選擇簡單的,如果n%8等於0,那麼就輸出整數形式,直接輸出就行。接下來就是比較難的小數輸出了,首先,你不能選擇直接輸出%.3f,因為n/8是兩個整數相除,只會得到整數,你得到的肯定是x.000的形式,所以,你就需要用到強制型別轉換了,想辦法把n/8中n或者8中的任意乙個變成小數(你當然也你能把它們都變成float型),這樣得到的就是float型別的。(因為根據自動型別轉換規則,當/號兩邊是int型和float型時,結果自動轉換成float型別)

解法一:

預先把n轉換成float

#pragma gcc optimize(2)

#include #include using namespace std;

int main()

{// freopen("input.txt","r",stdin);

//別忘注釋

int n;

cin>>n;

if(n%8==0)

{int a=n/8*3;

int b=n/8;

cout<解法二:

在表示式中將n變成浮點數型別,讓n乘或除以1.0就可以了

#pragma gcc optimize(2)

#include #include using namespace std;

int main()

{// freopen("input.txt","r",stdin);

//別忘注釋

int n;

cin>>n;

if(n%8==0)

{int a=n/8*3;

int b=n/8;

cout<解法三:

在表示式中將8變成浮點數8.0

#pragma gcc optimize(2)

#include #include using namespace std;

int main()

{// freopen("input.txt","r",stdin);

//別忘注釋

int n;

cin>>n;

if(n%8==0)

{int a=n/8*3;

int b=n/8;

cout<解法四:

利用標準的強制轉換將n轉換成浮點數

#pragma gcc optimize(2)

#include #include using namespace std;

int main()

{// freopen("input.txt","r",stdin);

//別忘注釋

int n;

cin>>n;

if(n%8==0)

{int a=n/8*3;

int b=n/8;

cout《附加知識點:用強制轉換把float型別轉化成int型別時,都會進行四捨五入,謹慎使用。

最小長方形

題目 給定一系列2維平面點的座標 x,y 其中x和y均為整數,要求用乙個最小的長方形框將所有點框在內。長方形框的邊分別平行於x和y座標軸,點落在邊上也算是被框在內。輸入 測試輸入包含若干測試用例,每個測試用例由一系列座標組成,每對座標 x y 佔一行,其中 x 和 y 小於 1000 一對 0,0 ...

最小長方形

題目描述 給定一系列2維平面點的座標 x,y 其中x和y均為整數,要求用乙個最小的長方形框將所有點框在內。長方形框的邊分別平行於x和y座標軸,點落在邊上也算是被框在內。輸入 測試輸入包含若干測試用例,每個測試用例由一系列座標組成,每對座標佔一行,其中 x 和 y 小於 231 一對0 座標標誌著乙個...

最小長方形

果然,自己的 和別人的 的差別,就是這麼大!所以以後,還是要好好練習,自己寫 先寫自己的,再看別人的,因為差別太大了。看著別人的 根本就不動腦子了。連簡單的都寫不出來了!看看吧,這就是差別!include include int a 1005 b 1005 int main int amax 240...