电费结算
Description
WZK最近靠租房發(fā)家致富了。作為WZK老同學(xué)的你也要租房,于是WZK決定不要房租,但是電費(fèi)還得付。以下是用電價(jià)格: 舉個(gè)例子吧。如果你用電為10123千瓦時(shí),那么要付2 * 100 + 3 * 9900 + 5 * 123 = 30515塊錢(好貴)。 到結(jié)算電費(fèi)的日子了,可是WZK家里只有一個(gè)總電表,也就是統(tǒng)計(jì)你和WZK總共用的電量。 但是WZK有辦法告訴你以下信息: 1).如果按照總電表來看要交給供電局的錢A。(也就是兩個(gè)人用電量加起來一起算錢) 2).你和WZK如果分開付的話,你們付的錢的差值B。 現(xiàn)在你想知道如果你單獨(dú)算錢的話,需要付多少錢。當(dāng)然,你的用電量不會(huì)比WZK多。 舉個(gè)例子:如果你們一起算錢要付1100,并且如果分開來算,你們的差值是300的話,那么你用了150kwh,WZK用了250kwh。讓我們來驗(yàn)算一下:你們一共用電400kwh,所以要付2 * 100 + 3 * 300 = 1100,你單獨(dú)要付2 * 100 + 3 * 50 = 350,WZK單獨(dú)要付2 * 100 + 3 *?150 = 650。所以最后,你只需要告訴我你單獨(dú)要付350元。
Input
輸入僅一行,包含兩個(gè)整數(shù)A和B(1 ≤ A, B ≤ 10^9),含義同上。 輸出描述: 輸出僅一行一個(gè)整數(shù),代表你單獨(dú)算需要付的錢。數(shù)據(jù)保證解唯一。
Output
輸出僅一行一個(gè)整數(shù),代表你單獨(dú)算需要付的錢。數(shù)據(jù)保證解唯一。Sample Input
1100 300Sample Output
350思路:一道二分題,先算出兩人一共花費(fèi)的用電量
再二分用電量,原因是由于具有單調(diào)性
貼上代碼(寫的丑勿怪)
const c1=200; c2=29700; c3=4950000; var a,b,sum1,sum2,s,pre,re,mid,i,j,k,n:longint; function solve(x:longint):longint; beginif x<=c1 thenexit(x div 2);if x<=c1+c2 thenexit((x-c1) div 3+100);if x<=c1+c2+c3 thenexit((x-c1-c2) div 5+10000);exit((x-c1-c2-c3) div 7+1000000); end; function sum(x:longint):longint; beginif (x<=100) thenexit(x*2);if (x<=10000) thenexit((x-100)*3+c1);if (x<=1000000) thenexit((x-10000)*5+c1+c2);exit((x-1000000)*7+c1+c2+c3) end; beginread(a,b);pre:=0;s:=solve(a);re:=s;while pre<re dobeginmid:=(pre+re) div 2;sum1:=sum(mid);sum2:=sum(s-mid);if sum2-sum1=b thenbeginwriteln(sum1);halt;endelseif sum2-sum1>b thenpre:=mid+1else re:=mid;end; end. View Code
?
?轉(zhuǎn)載于:https://www.cnblogs.com/fhlxpyz/p/6024392.html
總結(jié)
- 上一篇: Android 检查设备是否存在 导航栏
- 下一篇: 版本控制工具Git 常用操作命令