今天刷oj的时候碰到了这题
简单是很简单,但有几个坑: t==0,能吃的苹果比现有苹果多,s能不能整除t
下面是我的算法,已AC
#include<iostream> using namespace std; int main(){ int m,t,s;//m个苹果,吃一个需t分钟,过去了s分钟 int num_apple_remain;//剩余完整苹果数 cin>>m>>t>>s; if(t==0)//砸-瓦!鲁!多! { num_apple_remain = 0; } else { int apple_eat;//理论上s分钟里能吃的苹果数,包含不完整 if(s%t==0){//s整除t或s==0 apple_eat = s/t; } else{//不整除 apple_eat = s/t+1; } if(m<=(apple_eat)){//吃完或只剩下一个不完整的 num_apple_remain = 0; } else{//没吃完 num_apple_remain = m-apple_eat; } } cout<<num_apple_remain; return 0; }但太过于冗长
便看了下大佬的解法:
#include<bits/stdc++.h>//万能头文件 using namespace std; int m,t,s; int main() { cin>>m>>t>>s; if(t==0)//特判t=0的情况 { cout<<0<<endl; return 0; } if(s%t==0)//如果s是t的整数倍 cout<<max(m-s/t,0)<<endl; else//如果不是 cout<<max(m-s/t-1,0)<<endl; return 0;//程序结束 }//这个max很灵性,记录一下大佬的解法里用了max函数,直接剩下了我算法里最后一个if-else,变得十分简洁。
故在此记录一下