Question 4. 电信收费系统
输入本月通话时间、用户本年度未按时缴费次数,计算本月应缴话费
算法思想
首先校验输入的通话时间、未按时缴费次数,确定其符合规范后,再判断折扣档位,计算本月应缴话费。
代码实现
function telecomSystem(callingTime: number, count: number): string {
if (callingTime < 0 || callingTime > 31 * 24 * 60) {
return "通话时长数值越界"
}
if (count < 0 || count > 11) {
return "未按时缴费次数越界"
}
const maxNum: number[] = [1, 2, 3, 3, 6]
const level: number = getLevel(callingTime)
if (count <= maxNum[level - 1]) {
return String(Math.round((25 + 0.15 * callingTime * (1 - (level + 1) * 0.005)) * 100) / 100)
}
return String(Math.round((25 + 0.15 * callingTime) * 100) / 100)
}
function getLevel(time: number): number {
if (time > 0 && time <= 60) {
return 1
}
if (time > 60 && time <= 120) {
return 2
}
if (time > 120 && time <= 180) {
return 3
}
if (time > 180 && time <= 300) {
return 4
}
return 5
}