信息学奥赛一本通 1038:苹果和虫子 | OpenJudge NOI 1.3 15 | OpenJudge NOI 1.4 21
生活随笔
收集整理的這篇文章主要介紹了
信息学奥赛一本通 1038:苹果和虫子 | OpenJudge NOI 1.3 15 | OpenJudge NOI 1.4 21
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【題目鏈接】
ybt 1038:蘋果和蟲子
OpenJudge NOI 1.3 15:蘋果和蟲子
OpenJudge NOI 1.4 21:蘋果和蟲子2
【題目考點】
1. if…else語句
if(判表達式)
{語句段1}
else
{語句段2}
如果判斷表達式的值為true,運行語句段1。如果判斷表達式的值為false,運行語句段2。
2. 比較函數max, min(存在于< algorithm >頭文件中)
- int max(int a, int b); double max(double a, double b);返回a,b中較大的值
- int min(int a, int b); double min(double a, double b);返回a,b中較小的值
【解題思路】
解法1:列數學公式
- 蟲子每x小時能吃掉1個蘋果,所以1小時能吃掉1x\frac{1}{x}x1?個蘋果,y小時能吃掉yx\frac{y}{x}xy?個蘋果。
- 已知共有n個蘋果,y小時后還剩下n?yxn-\frac{y}{x}n?xy?個蘋果,剩下的蘋果中可能存在不完整的蘋果(即n?yxn-\frac{y}{x}n?xy?可能是小數),完整的蘋果個數為?n?yx?\lfloor n-\frac{y}{x}\rfloor?n?xy??(向下取整)。
- 但蘋果個數最少為0,所以最終剩下的完整的蘋果個數為max(0,?n?yx?)max(0, \lfloor{n-\frac{y}{x}}\rfloor)max(0,?n?xy??)
解法2:判斷不同情況
【題解代碼】
解法1:列數學公式
#include <bits/stdc++.h> using namespace std; int main() {double n, x, y;cin>>n>>x>>y;cout<<max(0, (int)floor(n - y / x));//調用int max(int a, int b);求兩個數的最大值 return 0; }解法2:判斷不同情況
用if…else語句
#include<bits/stdc++.h> using namespace std; int main() {int n, x, y, rest;cin>>n>>x>>y;if (y%x == 0)rest = n - y/x;elserest = n - y/x - 1;if (rest <= 0)cout<<0<<endl;elsecout<<rest<<endl;return 0; }解法3:判斷不同情況
用三目運算符 ? :
#include<bits/stdc++.h> using namespace std; int main() {int n, x, y, res;cin>>n>>x>>y;res = n - y/x - (y%x == 0 ? 0 : 1);cout << (res <= 0 ? 0 : res);return 0; }總結
以上是生活随笔為你收集整理的信息学奥赛一本通 1038:苹果和虫子 | OpenJudge NOI 1.3 15 | OpenJudge NOI 1.4 21的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息学奥赛一本通 2072:【例2.15
- 下一篇: 信息学奥赛一本通(1063:最大跨度值)