help!只有测试点6是错的TAT

P1909 [NOIP2016 普及组] 买铅笔

其实min函数还有更简便的写法: min(x1,min(x2,x3); 这样可以不用函数
by gzqYES @ 2023-10-26 21:20:37


@[gzqgzq666](/user/1057445) 貌似不对,错误应该还是在ceil上
by shabi45 @ 2023-10-26 21:29:50


@[shabi45](/user/1012444) 是的,所以我改进了一下做出了这道题 首先我先说这里面错的:最好是用long long,头文件推荐bits/stdc++.h ceil在这道题是致命弱点,比如#6就是这个原因 ok,贴代码 ------------ ```cpp #include <bits/stdc++.h> using namespace std; long long a,b,c,d,e,f,g,x1,x2,x3; int main(){ cin>>a>>b>>c>>d>>e>>f>>g; if(a%b==0) x1=a/b*c; else x1=(a/b+1)*c; if(a%d==0) x2=a/d*e; else x2=(a/d+1)*e; if(a%f==0) x3=a/f*g; else x3=(a/f+1)*g; cout<<min(x1,min(x2,x3))<<endl; return 0; } ```
by gzqYES @ 2023-10-26 21:41:13


@[gzqgzq666](/user/1057445) 只需要特判一下就ok了
by gzqYES @ 2023-10-26 21:42:01


@[gzqgzq666](/user/1057445) 明白了,所以为啥用ceil是错误呢?还是说ceil有什么要注意的地方呢?
by fenrir_chen @ 2023-10-26 22:04:10


@[a1820740377](/user/1169141) 对不起,昨晚没看到你的消息,其实用ceil也没什么问题,只不过在除的时候要加个特舒判段,就像我用floor也加了个特判一样
by gzqYES @ 2023-10-27 13:07:07


@[gzqgzq666](/user/1057445) 手动给赞
by shabi45 @ 2023-10-28 08:17:22


|