社区讨论
蒟蒻自己都没想到,不用if竟AC了P5709
灌水区参与者 5已保存回复 8
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 8 条
- 当前快照
- 1 份
- 快照标识符
- @locxj9hn
- 此快照首次捕获于
- 2023/10/30 21:22 2 年前
- 此快照最后确认于
- 2023/11/05 07:45 2 年前
本蒟蒻最近买了《深基》,决心要打好基础。
做到了31页的Apples Prologue一题(洛谷P5709 题目),发现要求是尝试不使用if来做题(因为“还没有教”)。
于是蒟蒻冥思苦想,找到了一点奇怪的思路,写出了一个非常奇怪的代码:
CPP#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int m,t,s;
cin>>m>>t>>s;
int eaten=ceil(1.0*s/t);//吃掉的苹果数
int num=((m-eaten)+abs(m-eaten))/2;/*很奇怪的写法,在不用if的情况下特判s/t>m的情况:
当m-s/<0时,(m-eaten)+abs(m-eaten)等于2倍的m-eaten,
再除以2,也能得到想要的结果;
当m-s/t<0时,(m-eaten)+abs(m-eaten)等于0,再除以2还是0*/
cout<<num<<endl;
return 0;
}
蒟蒻本来以为这个奇怪的代码只能A掉1,3,4,5号数据点(因为第2个数据点中t=0),结果发现5个点都AC了?!
哪位神犇来给我讲讲t=0时程序是怎么算出1.0 *s/t的结果的。
不胜感谢。
回复
共 8 条回复,欢迎继续交流。
正在加载回复...