修练者
题目描述 Description
小明需要寄几本书给远方的小伙伴,他提前了解了一下离家比较近的两家快递:顺丰和韵达。其计价规则如下:顺丰快递在1000克以内(包含1000克),基本价为12元,若超过1000克,超过部分每500克加收3元,不足500克按500克计算;韵达快递在1000克以内(包含1000克),基本价为8元,若超过1000克,超过部分每500克加收4元,不足500克按500克计算。小明又得知,顺丰快递的速度比较快,没有加急和不加急之分,而韵达快递分为加急和不加急两种,如果选择加急快递,需要在以上价格的基础上加收4元。先已知小明要寄的书本重量为N克,请帮小明计算一下选择哪种快递更合理。
输入描述 Input Description
输入一行,包含整数和一个字符,以一个空格分开,分别表示书本重量(单位为克,且不超过1000000克)和是否加急。如果字符是y,说明选择加急;如果字符是n,说明不加急。
输出描述 Output Description
输出一行,如果选择顺丰快递更合理,输出"SF";如果选择韵达快递更合理,输出"YD",如果两个快递所需要的运费都一样,输出“Same”。
样例输入 Sample Input
1200 y
样例输出 Sample Output
SF
小蒟蒻在线求思路
大佬们勿喷
一直都是80分
本来以为上来if-else就可以了
但为什么……为什么!
高级光能
分段费用问题
--------------------分割线 以下为1000元以下---------------------
定义char数组 表示是否加急 例如是ch吧
ch判断是否加急
如果ch=='y'
那么ch=12
否则ch=8
--------------------分割线 以下为1000元以上---------------------
(总重量-1000)%500!=0
不足500按500算
12+总量-1000)/500*3+3 顺丰快递
8+(x-1000)/500*4+4 韵达快递
否则
12+(总量-1000)/500*3 顺丰快递
8+(总量-1000)/500*4 韵达快递
判断ch是否==‘y’
是就+=4
输出自己写
你自己要理解这一类分段费用问题,用if-else写
望采纳!谢谢!Thanks♪(・ω・)ノ
赵朗在2020-06-19 22:20:06追加了内容
如果你诚信要整段代码
就加我Q
中级守护
- #include<iostream>
- using namespace std;
- int main(){
- int a,x,y;
- char d;
- 输入>>a>>d;
- 如果(a<=1000){
- x=12; y=8;
- 如果(d=='y'){
- y=12; } }
- else if(a>1000){
- if((a-1000)%500==0)
- { x=12+(a-1000)/500*3;
- y=8+(a-1000)/500*4; }
- else{ x=15+(a-1000)/500*3;
- y=12+(a-1000)/500*4; }
- if(d=='y'){ y=y+4;} }
- if(x>y){
- cout<<"YD"; }
- else if(x==y){
- cout<<"Same"; }
- else{
- 输出<<"SF"; }
- return 0; }
初级光能
//顺丰:1.<=1000-->12元;2.>1000(超过部分每500克加收3元,不足500克按500克计算) SF
//韵达:1.<=1000-->8元;2.>1000(超过部分每500克加收4元,不足500克按500克计算)(不加急) YD
//!!!韵达:加急=原价+4元 N克
//N n(不加急)/y(加急) 相等-->Same
新手天翼
int n,s,y;
char a;
cin>>n>>a;
if(n<=1000){
s=12;
}
else
{
s=12+ceil((n-1000)/500.0)*3;
}
if(n<=1000){
y=8;
}
else{
y=8+ceil((n-1000)/500.0)*4;
}
if(a=='y')
y+=4;
if(s<y)
cout<<"SF";
else if(s>y)
cout<<"YD";
else
cout<<"Same";
注意加#include<cmath>头文件
中级启示者
- 如果重量>1000{
- if(如果重量-1000是500的倍数){
- s+=((n-1000)/500+1)*3;//n是重量;
- s1+=((n-1000)/500+1)*4;
- }
- else{
- s+=(n-1000)/500*3;
- s1+=(n-1000)/500*4;
- }
- }
- 如果加急 s1+=4;
- 最后比较即可
高级启示者
这是一道典型的分段计算问题,无论是寄顺丰还是韵达,我们都可以先判断一下n是否≤1000,如果是,那么比较顺丰费用与韵达费用+加急费的大小,输出。
否则,将n-1000,然后计算至少要多少个500g才能装下n,比较顺丰费用与韵达费用+加急费的大小,输出(这里的费用不要忘记加基础费)。
这道题其实难度不大,主要看的是算法和思路,整个程序就这么简单。