Apples Prologue灵性算法
今天刷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,变得十分简洁。
故在此记录一下