蒟蒻自己都没想到,不用if竟AC了P5709
  • 板块灌水区
  • 楼主AWESOME凹桑
  • 当前回复8
  • 已保存回复8
  • 发布时间2020/11/18 21:51
  • 上次更新2023/11/5 07:45:24
查看原帖
蒟蒻自己都没想到,不用if竟AC了P5709
202421
AWESOME凹桑楼主2020/11/18 21:51

本蒟蒻最近买了《深基》,决心要打好基础。

做到了31页的Apples Prologue一题(洛谷P5709 题目),发现要求是尝试不使用if来做题(因为“还没有教”)。

于是蒟蒻冥思苦想,找到了一点奇怪的思路,写出了一个非常奇怪的代码:

#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的结果的。

不胜感谢。

2020/11/18 21:51
加载中...