生活随笔
收集整理的這篇文章主要介紹了
电费结算(electric)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Description
WZK最近靠租房發家致富了。作為WZK老同學的你也要租房,于是WZK決定不要房租,但是電費還得付。以下是用電價格:
舉個例子吧。如果你用電為10123千瓦時,那么要付2 * 100 + 3 * 9900 + 5 * 123 = 30515塊錢(好貴)。到結算電費的日子了,可是WZK家里只有一個總電表,也就是統計你和WZK總共用的電量。但是WZK有辦法告訴你以下信息:1).如果按照總電表來看要交給供電局的錢A。(也就是兩個人用電量加起來一起算錢)2).你和WZK如果分開付的話,你們付的錢的差值B。現在你想知道如果你單獨算錢的話,需要付多少錢。當然,你的用電量不會比WZK多。舉個例子:如果你們一起算錢要付1100,并且如果分開來算,你們的差值是300的話,那么你用了150kwh,WZK用了250kwh。讓我們來驗算一下:你們一共用電400kwh,所以要付2 * 100 + 3 * 300 = 1100,你單獨要付2 * 100 + 3 * 50 = 350,WZK單獨要付2 * 100 + 3 * 150 = 650。所以最后,你只需要告訴我你單獨要付350元。
Input
輸入僅一行,包含兩個整數A和B(1 ≤ A, B ≤ 10^9),含義同上。 輸出描述: 輸出僅一行一個整數,代表你單獨算需要付的錢。數據保證解唯一。
Output
輸出僅一行一個整數,代表你單獨算需要付的錢。數據保證解唯一。
Sample Input
1100 300
Sample Output
350
Data Constraint
Hint
20%的數據,A和B都不超過10^6。100%的數據,1 ≤ A, B ≤ 10^9。
.
.
.
.
.
.
分析
先看懂是如何收費的,根據A反算出總電費
再二分出答案計算檢驗
.
.
.
.
.
程序:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int b,df=0;int js(int x)
{int w=0,a=x,p=2;if (x>100) {w+=2*100;a-=100;p=3;}if (x>10000){w+=3*9900;a-=9900;p=5;}if (x>1000000){w+=5*990000;a-=990000;p=7;}w+=a*p;return w;
}int ef(int l,int r)
{while (l<=r){int mid=(l+r)/2;int a1=js(mid),b1=js(df-mid);if (a1-b1==b) return b1; elseif (a1-b1<b) l=mid+1; else if (a1-b1>b) r=mid-1;}}int main()
{int a;scanf("%d%d",&a,&b);int p=2;if (a>2*100) {df+=100;a-=200;p=3;}if (a>3*9900){df+=9900;a-=3*9900;p=5;}if (a>5*990000){df+=990000;a-=5*990000;p=7;}df+=a/p;int ans;ans=ef(0,df);printf("%d",ans);return 0;
}
轉載于:https://www.cnblogs.com/YYC-0304/p/11094943.html
總結
以上是生活随笔為你收集整理的电费结算(electric)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。