洛谷[P1422]小玉家的电费

题目传送门OvO


题目描述

夏天到了,各家各户的用电量都增加了许多,相应的电费也交的更多了。小玉家今天收到了一份电费通知单。小玉看到上面写:据闽价电[2006]27号规定,月用电量在150千瓦时及以下部分按每千瓦时0.4463元执行,月用电量在151~400千瓦时的部分按每千瓦时0.4663元执行,月用电量在401千瓦时及以上部分按每千瓦时0.5663元执行;小玉想自己验证一下,电费通知单上应交电费的数目到底是否正确呢。请编写一个程序,已知用电总计,根据电价规定,计算出应交的电费应该是多少。

输入输出格式

输入格式:

输入一个整数,表示用电总计(单位以千瓦时计),不超过10000。

输出格式:

输出一个数,保留到小数点后1位(单位以元计,保留到小数点后1位)。


小玉系列题目。
这题偷偷地告诉你们: 可以四舍五入! \texttt{可以四舍五入!} 可以四舍五入!

#include <iostream>
using namespace std;
int main(){
    int a=0;
    double b=0;//双精度小数型 
    cin>>a;
    if(a<=150){//判断小于等于150 
        b = a*0.4463;
    }else if(a>=151&&a<=400){//大于150小于等于400 
        b += 150*0.4463;
        b += (a-150)*0.4663;
    }else{//不是前两种一定就是大于400 
        b += 150*0.4463;
        b += (400-150)*0.4663;
        b += (a-400)*0.5663;
    }
    b=int((b*10)+0.5)/10.0;//四舍五入到小数点后一位,恩,这才是要说的
/* +0.5的话,如果大于等于0.5就往前进一位,小于0.5就不往前进,然后强制转换到int会向下取整,正好四舍五入到整数,这是一种我认为最简单的四舍五入方法。
如果需要四舍五入到某一位,那么就*多少多少然后再除就好了
比如小数点后一位就*10/10.0
后两位*100/100.0
跟一个.0代表是浮点运算恩,这样就不会除完是int了
*/ 
	cout<<b;
} 

Pascal的:

program ye;
  var 
    n:longint;
    s:real;  
begin  
  read(n);//输入小玉的月用电量
  if n<=150 then//if 在第一梯度 then 电费=第一梯度单位电费*用电量 
    s:=0.4463*n  
    else 
      if n<=400 then//if 在第二梯度 then 电费=第二梯度部分用电*第二梯度部分单位电费+在第一梯度用电*第一梯度单位电费 
        s:=(n-150)*0.4663+150*0.4463  
        else 
        s:=(n-400)*0.5663+?????????; //问号处根据前面的代码自己思考
  write(s:0:1);//输出电费并保留1位小数  
end.  

Java的:

import java.util.Scanner;
import java.text.DecimalFormat;
public class Main
{
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        double ans = 0;
        int n = sc.nextInt();
        if (n <= 150)
            ans += n * 0.4463;
        else
        {
            n -= 150;
            ans += 150 * 0.4463;
            if (n <= 250)
                ans += n * 0.4663;
            else
            {
                n -= 250;
                ans += 250 * 0.4663;
                ans += n * 0.5663;
            }
        }
        DecimalFormat df = new DecimalFormat(".0");
        System.out.println(df.format(ans));
    }
}

Python的:

s = int(input())
if s > 400:
    print('%.1f' % ((s - 400) * 0.5663 + 250 * 0.4663 + 150 * 0.4463))
elif s > 150:
    print('%.1f' % ((s - 150) * 0.4663 + 150 * 0.4463))
else:
    print('%.1f' % (s * 0.4463))
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值