标签:暴力
思路:A了好几次,一直部分过,最后加了3公里之内的判断A
问题描述
我们经常乘坐出租车,出租车的计费是一个很有趣的问题。在某市,出租车起步价是3公里之内(包括3公里)8元;超过3公里后,15公里之内(包括15公里)每500米计费1元;超过15公里之后,每300米计费1元。所以,乘坐出租车行驶的里程越远,花费就会越多。例如,行驶30公里时,就需付费82元。但是有经验的老手告诉我们,若从中途下车再打一辆车(相当于在中途结一次账),就能少花一些钱。
请编程验证老手的话,求出在行驶多少米时结一次账是最便宜的(如有多个解取最少的米数),并输出在此情况下所需支付的钱数。
输入描述
一个正整数n(n<=30),表示总里程数,单位为公里。
输出描述
第一行一个正整数,表示中途结账地点距离起点的路程,单位为米。
第二行一个正整数,表示最少付费值,单位为元,不计小数。
样例输入
30
样例输出
14401
63
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{int x,y,s;scanf("%d",&x);y=x*1000;int flag,pri;double mi=1000,m,f;if(y>=3000){for(int i=3000; i<=y; i++){int u=y-i;
// printf("u==%d",u);m=0.0;if(i<=3000){m=m+8;}else if(i<=15000&&i>3000){m=m+8+(i-3000)/500;}else{m=m+32+(i-15000)/300;}if(u==0){m=m;}else if(u<=3000){m=m+8;}else if(u<=15000&&u>=3000){m=m+8+(u-3000)/500;}else{m=m+32+(u-15000)/300;}if(mi>m){mi=m;flag=i;}}pri=(int)(mi);printf("%dn%dn",flag,pri);}else{printf("%dn8n",y);}return 0;
}
本文发布于:2024-02-05 00:56:27,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170720411661588.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |