寻光


私信TA

用户名:RITD

访问量:28148

签 名:

追寻最优解

等  级
排  名 424
经  验 4963
参赛次数 0
文章发表 13
年  龄 20
在职情况 学生
学  校 East Electricity
专  业 计科

  自我简介:

很菜所以很努力

解题思路: 1.先理清就是题目所包含的数学关系,类似分段函数

                  i: 利润高于100000元,低于200000元(100000<I≤200000)时,低于100000元的部分按10%提成,高于100000元的部分,可提成 7.5%;

                     这句话就可以列函数关系式  y = 0.1 x   (x <= 100000)   y = 0.1 * 100000 + (x - 100000) * 0.075

                  ii: 200000<I≤400000时,低于200000元部分仍按上述办法提成,高于200000元的部分按5%提成;

                           y = 0.1 * 100000 + 100000 * 0.075 + (x - 200000) * 0.05   ( 200000 < x <= 400000)

                           注意这里不是 200000 * 0.075

                  iii:当 400000 < i  <= 600000 时

                          y = 10000 + 100000 * 0.075 + 200000 * 0.05 + (x - 400000); 

                  iv:当 600000 < i <= 1000000时

                          y = 10000 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + (y - 600000) * 0.015;

                  v:当 i > 1000000时

                          y = 10000 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + (1000000 - 600000) * 0.015 + (x - 1000000) * 0.01;

所以整个的分段函数为:   y = 0.1 x   (x <= 100000)

                                        y = 0.1 * 100000 + (x - 100000) * 0.075   ( 100000 <=x < 200000)

                                        y = 0.1 * 100000 + 100000 * 0.075 + (x - 200000) * 0.05   ( 200000 < x <= 400000)

                                        y = 10000 + 100000 * 0.075 + 200000 * 0.05 + (x - 400000);    ( 400000 < x <= 600000)

                                        y = 10000 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + (y - 600000) * 0.015;  (600000 < x <= 1000000)

                                         y = 10000 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + (1000000 - 600000) * 0.015 + (x - 1000000) * 0.01;(x > 1000000)

再根据分段函数求,就OK

分段函数利用if else嵌套来做即可

                 

                 
注意事项:  理清里面的数学问题

参考代码:

#include <stdio.h>
#define M1 100000
#define M2 200000   //用于分档次
#define M3 400000
#define M4 600000
#define M5 1000000
int main(void)
{
	int n;
	
	scanf("%d", &n);
	
	if (n <= M1)
	   n = 0.1 * n;
	else
	    if (n <= M2)
	       n = 10000 + (n - 100000) * 0.075;
	    else
	        if (n <= M3)
	           n = 10000 + 100000 * 0.075 + (n - 200000) * 0.05;
	        else
	            if (n <= M4)
	               n = 10000 + 100000 * 0.075 + 200000 * 0.05 + (n - 400000) * 0.03;
	            else
	                if (n <= M5)
	                   n = 10000 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + (n - 600000) * 0.015;
	                else
	                   n = 10000 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + (1000000 - 600000) * 0.015 + (n - 1000000) * 0.01;
	printf("%d", n);        
    return 0;
}


 

0.0分

1 人评分

  评论区

  • «
  • »