中石油新生賽第八場 問題 C: BMI
阿新 • • 發佈:2018-12-22
題目描述
小X經過刻苦訓練獲得了 NOIP 的國一,並參加了 NOI,獲得了保送資格,被保送到南都大學學習,進入大學以後,小X覺得中學程式設計太辛苦了,應該好好犒勞一下自己,剛好南都大學周邊美食如雲,吃不勝吃,小X不到一個學期就長了 30 多斤,四年下來已經胖得不成樣子,體重一舉飆升到了 118kg,同時血壓也升到了 128mmHg,離正常血壓的上限也不遠了,數字都很吉祥,但身體狀況已呈險兆,上個樓梯就心慌氣促,於是下定決心要減重,正所謂胖子不是一天就能吃成的,瘦下來也不可能餓幾天就達到,小X的短期目標就是減到像 Q 老師那麼瘦,儘管也從沒有人誇過 Q 老師瘦!當然小X的最終目標是減到正常體重,正常體重怎麼算呢?國際通用的標準是 BMI 指數,以下科普一下 BMI 指數:BMI 指數=體重/(身高^2),正常範圍在 18 到 24 之間,小於 18 過輕,大於 24 過重。這裡體重的單位為公斤(kg),身高的單位是米(m)。如費德勒的身高為 185 釐米,體重為 85 公斤,其 BMI=85/(1.85*1.85)≈24.8356。
輸入
輸入資料包含兩個用空格隔開的正整數,分別表示身高和體重,身高的單位是釐米(cm),體重的單位為公斤(kg),1 米等於 100 釐米。
輸出
輸出資料第一行為一個字串,“Good!”表示正常,“Too fat!”表示過重,“Too thin!”表示過輕,雙引號不需要輸出,感嘆號都是英文字元。
如果體重正常則不用輸出第二行,否則第二行輸出一個正整數 w,表示此人離正常體重的最小整數差值,假如此人過重,則他要減去 w 公斤才能使得 BMI 指數小於等於 24,如果太輕則要增加 w 公斤才能使得BMI 指數大於等於 18。
樣例輸入
複製樣例資料 175 118
樣例輸出
Too fat!
45
提示
20%的資料,BMI 在正常範圍內
另外 80%的資料,一半太胖,一半太瘦
100%的資料,身高<=250,體重<=300
三種情況,good沒什麼好說的,如果過瘦,讓體重++再去計算BMI看符不符合,過重,讓體重–再去計算BMI看符不符合
#include <cstdio>
#include <iostream>
#include <string>
using namespace std;
int main()
{
double l,h,x;
int w=0;
cin>>l>>h;
l=l/100;
x=h/(l*l);
if (x<18)
{
printf("Too thin!\n");
while(x<18)
{
h++;
w++;
x=h/(l*l);
}
printf("%d",w);
}
else if(x>24)
{
printf("Too fat!\n");
while(x>24)
{
h--;
w++;
x=h/(l*l);
}
printf("%d",w);
}
else
printf("Good!");
return 0;
}