问题标题: 酷町堂:1075 合理选择快递

0
0
束子睿
束子睿
修练者
修练者

题目描述 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就可以了

但为什么……为什么!


0
0
0
朱瑾文
朱瑾文
新手光能
新手光能

顺丰和韵达的输入不同

0
赵朗
赵朗
高级光能
高级光能

分段费用问题

--------------------分割线 以下为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

0
徐子玄
徐子玄
初级光能
初级光能

分段函数!!再比较!!

0
张恩泽
张恩泽
高级天翼
高级天翼

可以写一个函数比较(这样写比较高大上,让人觉得你很强)

0
丁勇智
丁勇智
中级守护
中级守护
  • #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; }
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

0
武奕楷
武奕楷
新手天翼
新手天翼

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>头文件

0
汪恺恒
汪恺恒
中级启示者
中级启示者
  • 如果重量>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;
  • 最后比较即可
0
沙宸安
沙宸安
高级启示者
高级启示者

这是一道典型的分段计算问题,无论是寄顺丰还是韵达,我们都可以先判断一下n是否≤1000,如果是,那么比较顺丰费用与韵达费用+加急费的大小,输出。

否则,将n-1000,然后计算至少要多少个500g才能装下n,比较顺丰费用与韵达费用+加急费的大小,输出(这里的费用不要忘记加基础费)。

这道题其实难度不大,主要看的是算法和思路,整个程序就这么简单。

0
我要回答