首页 > 编程语言 >阶梯计费算法

阶梯计费算法

时间:2022-09-19 15:36:16浏览次数:64  
标签:used rules sum value 阶梯 300 算法 计费

 

 如上图,电费计费规则,算法如下:

$rules = [
330 => [0,100],
300 => [100,300],
280 => [300,500],
220 => [500,1000],
150 => [1000,2000],
80 => [2000, PHP_INT_MAX],
];

function calc($used,$rules){
$sum = 0;
foreach ($rules as $key => $value){
// 大于计费段
if($used < $value[0]) break;
// 累加前期计费
if($used >= $value[1]) {
$sum += $key * ($value[1] - $value[0]);
}
// 在最后计费段内
if($value[0] < $used && $used <= $value[1]){
$sum += ($used - $value[0]) * $key;
}
}
return round($sum, 2);
}
echo calc(700,$rules);
最后得到193000;

 

标签:used,rules,sum,value,阶梯,300,算法,计费
From: https://www.cnblogs.com/wujf-myblog/p/16707792.html

相关文章

  • PHP 拼手气红包分配算法
    点击查看代码/****@param$money金额*@param$count数量*@returnarray*@throwsException*@author51924*@date20......
  • 道长的算法笔记:贪心算法经典模型
    (一)区间模型(1.1)区间合并(1.2)区间选点(1.3)区间覆盖(1.4)区间分组(二)贪心常用证明方法......
  • Problem P18. [算法课贪婪]6和9组成的最大数字
    贪心:把9换成6是不可能的,只有把6换成9,而且要换就换最高位的那个6C++:to_string可以将整数转化为string类型,stoi可以将string转化为int类型,这个好用!#i......
  • Problem P17. [算法课贪婪]分发饼干
    力扣也有这道题,但是力扣做的很快,碰到有输入输出的题目就感觉我在做两道题目,一道是如何输入两行,每行是一个不定长的数组元素,最后在代码中转为数组,c++不好做,c的话可能就更......
  • 雪花算法分布式Id以及其产生的前端精度损失解决方法
    一.分布式id#特点:#1.全局唯一性:全局没有重复的id标识。2.递增性:保证生成的id在业务中是递增的。3.高可用:确保在任何时候都能生成正确可用的id。4.高并发:在高并发......
  • [算法]循环排序
    这类题的特点是给定的数值和下表rank是类似的,其中可能会有一些差异.在设计算法的时候,可以将value值映射到rank上去.其中,选择大于的值最好比rank的最大值+1,这样会避......
  • Problem P24. [算法课回溯]组合问题
    采用递归遍历所有可能性,再使用剪枝减小运行时间,利用回溯,代码有注释#include<iostream>#include<bits/stdc++.h>#include<cstdio>#include<string>usingnamespace......
  • 五种基础的最短路算法总结与证明
    朴素版dijkstra:进行n-1次松弛操作,每次都用当前dist最小的点更新,这样就能保证经过了n-1次松弛之后,起点到其他点的距离一定是最短的(On^2)堆优化......
  • 串的模式匹配算法
    一、算法设计思想1.简单模式匹配算法从主串的第一个位置开始和模式串的第一个字符开始比较,相等继续比较下一个字符;否则从主串的下一个字符和模式串的第一个字符重新开始......
  • k最近邻算法
    #K最近邻算法##概述K最近邻算法适用于找出距离A坐标最近的几个点,可以用来做推荐系统##计算公式以及模拟K最近邻算法有两个公式:距离公式,相似度公式(余弦)###距离公式......