出租车费
来源:互联网 发布:开眼视频mac版 编辑:程序博客网 时间:2024/04/27 17:22
1128:出租车费 分数: 4
时间限制:1 秒
内存限制:32 兆
特殊判题: 否
提交:34
解决: 8
题目描述
某市出租车计价规则如下:起步4公里10元,即使你的行程没超过4公里;接下来的4公里,每公里2元;之后每公里2.4元。行程的最后一段即使不到1公里,也当作1公里计费。
一个乘客可以根据行程公里数合理安排坐车方式来使自己的打车费最小。
例如,整个行程为16公里,乘客应该将行程分成长度相同的两部分,每部分花费18元,总共花费36元。如果坐出租车一次走完全程要花费37.2元。
现在给你整个行程的公里数,请你计算坐出租车的最小花费。
输入格式
输入包含多组测试数据。每组输入一个正整数n(n<10000000),表示整个行程的公里数。
当n=0时,输入结束。
输出
对于每组输入,输出最小花费。如果需要的话,保留一位小数。
样例输入
3
9
16
0
样例输出
10
20.4
36
提示[+]
*** 提示已隐藏,点击上方 [+] 可显示 ***
提示[-]
我一直觉得这个题目是相当有水平,关键是寻找一个点,而这个点就是求用2.4的车费,和10元车费间的关系,比如说当路程%8得出一个值时,如果这个时候这个值比4小,那么
假如为3, 3*2.4=7.2,而3在10时的时候还是10,所以求一个点,超过这个,用下一段,不超这个,用2.4,得出这个数为4,就是说4*2.4=9.6,但是4在再一次循环中还是10,所以肯定便宜嘛
#include<iostream>#include<cstdio>using namespace std;int main(){ int i,j,t,k,l; long long int n; while(scanf("%lld",&n)!=EOF) { if(n==0) break; double s=0; if(n<=4) { s=10; } else if(n<=8) { s=10+(n-4)*2; } else if(n%8==0) { s=18*(n/8); } else { k=n/8; if(n-k*8<=4) { s=k*18+(n-8*k)*2.4; } else { s=k*18+10+(n-8*k-4)*2; } /*t=k-1; s=s+t*18;*/ /*k=n/8-1; s=s+k*18; n=n-k*8; s=s+18+(n-8)*2.4;*/ } if(s-(int)s==0) printf("%d\n",(int)s); else printf("%.1f\n",s); } return 0;}
- 出租车费
- 出租车费
- 出租车费
- 出租车费
- 出租车费
- 出租车费
- SDJZUOJ 1128 出租车费
- SDJZU 出租车费
- SDJZU-出租车费
- SDJZU 出租车费
- SDJZ 出租车费
- 1128: 出租车费
- codeup 1128 出租车费
- 贪心问题 B: 出租车费
- 贪心入门——出租车费
- 湖北民族学院oj 1691(贪心) 之 出租车费
- if语句的运用:用C语言解决奖金发放和出租车费问题。
- 学车费用
- CLR无法从COM 上下文*****转换为COM上下文*****,这种状态已持续60秒。
- 设置读取失败
- android 编译问题
- xcode运行模拟器时弹出密码输入框之解决方案
- http协议头信息的作用
- 出租车费
- js网页滚动条滚动事件
- MFC中使用自定义CObject派生类重载“=”“==”操作符 error C2248: “CObject::operator =” error C2678: 二进制“==”
- 字典树
- keytool使用教程
- ocp-047-36(已解决)
- AD0错误:0x80040e14 用户sa登录失败
- 数据库范式
- js滚动条位置