日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

1038:苹果和虫子

發布時間:2023/12/18 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1038:苹果和虫子 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1038:蘋果和蟲子

時間限制: 1000 ms 內存限制: 65536 KB

【題目描述】

你買了一箱n個蘋果,很不幸的是買完時箱子里混進了一條蟲子。蟲子每x小時能吃掉一個蘋果,假設蟲子在吃完一個蘋果之前不會吃另一個,那么經過y小時你還有多少個完整的蘋果?

【輸入】

輸入僅一行,包括n,x和y(均為整數)。

【輸出】

輸出也僅一行,剩下的蘋果個數。

【輸入樣例】

10 4 9

【輸出樣例】

7

說明:

主要考查用編程解決數學問題。

不過這題存在一個問題,不知官方會不會修正,后面會講述此問題。

思路分析:

用題目的樣例,可以理解為有10個蘋果,蟲子每4小時吃掉一個蘋果,經過9小時還有7個完整的蘋果。

這題應注意題目的關鍵部分:第一個是剩余的是完整的蘋果,那么被蟲子咬了一口都不算完整;第二個是蟲子在吃完一個蘋果之前不會吃另一個。

數學的方法可以這么解:

10-9÷4=10-2.5=7.5

即還剩7.5個蘋果,但完整的只有7個,那0.5個(半個)不算完整。所以輸出的結果是7。

很明顯,是把計算出的結果去掉小數部分,只剩整數部分。解決這一問題,只需強制轉換為整型即可。不過在運算中存在除法時,要考慮數據類型問題,如果變量的類型都為整型時,那么9 / 4的結果為2,10 - 2的結果是8。下面用兩種方法來解決這一問題:

變量都聲明為double類型:

(整型)(n - y / x)

變量都聲明為整型:

(整型)(n - 1.0 * y / x)

或者使用向上取整函數ceil。

不過這些方法的本質是一樣的,都是讓數據變為浮點型進行運算。

如果把變量聲明為整型,因為此類問題不會存在負數,應該優先選擇unsigned類型,而不是int。

易錯點:

本題對于數據的說明并不嚴謹,如果y的值足夠大,當y / x > n時,結果為負數。顯然這是不可能的,這種問題不會存在負數的情況,就算蘋果全被蟲子吃光,結果也為0而已。

而本題屬于順序結構的題,按照學習階梯來看,學生還沒學if語句和條件運算符等知識點。

經過測試,提交后第4個測試點沒有通過。想全部通過,一般還是要用if語句或條件運算符等。

所以,如果使用if語句,變量的類型應選擇int或double,而不是unsigned。因為當y / x > n時,結果為負數,此時就可以通過if來判斷了,而選擇unsigned類型就不是那么方便了。

代碼中會展示這兩種方法。

求解過程:

聲明3個unsigned類型變量n、x、y。輸入3個整數給變量n、x、y。根據公式輸出運算結果。

運行結果:

前一種方法結算的結果存在負數,所以有一個測試點沒有通過。后一種方法使用了if條件語句,是把結果先保存在變量t中,如果變量t為負數,則讓t變為0。int(n - y * 1.0 / x)這條語句的int可以去掉,因為這條語句的結果是賦給一個int類型變量t,會自動轉換成int類型。

參考代碼 - C++:

此代碼有一個測試點沒有通過。

#include <iostream> using namespace std; int main() {unsigned n, x, y;cin >> n >> x >> y;cout << unsigned(n - y * 1.0 / x);return 0; }

參考代碼 - C語言:

此代碼有一個測試點沒有通過。

#include <stdio.h> int main() {double n, x, y;scanf("%lf %lf %lf", &n, &x, &y);printf("%u", (unsigned)(n - y / x));return 0; }

總結

以上是生活随笔為你收集整理的1038:苹果和虫子的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。