【題目描述】
眾所周知,每當我們看見自己糟糕的成績時,我們總希望以奇怪的方式將其四捨五入。
efim同樣如此。在晴朗的一天,efim拿到了他的成績x,他希望通過最多m次四捨五入使他的成績最大化(每一次四捨五入捨掉的的位置任意,但只能在小數部分,不能在整數部分)。注意:m次可以不用完。
例如1.14四捨五入掉最後一位後為1.1。1.5四捨五入後為2。1.299四捨五入後為1.3。
【輸入】
第一行兩個整數n和m,n表示x的字元數。1<=n<=200000,1<=m<=1000000000。
第二行乙個實數x,表示efim的成績。
【輸出】
乙個實數x,表示他的成績的可能的最大值,efim不希望他的成績有字尾零。
【輸入樣例1】
6 1
10.245
【輸出樣例1】
10.25
【輸入樣例2】
6 2
10.245
【輸出樣例2】
10.3
【輸入樣例3】
3 100
9.2
【輸出樣例3】
9.2
【提醒】
這道題同學們應追求滿分,而不是滿足於70,8090分。
時間限制 : 1s
空間限制 : 256m
看著比賽的最後一句話,就知道肯定是乙個細節很多的題(不然一般不會有70,80,90這三個這麼接近的數字)
首先,肯定是在越前面四捨五入越好,因為比較數字是從前往後一位一位比較的。難道這道題就這樣做完了?
不。如果是樣例10.245這種情況,五入了還可以再次五入,那就不行了。同時還有出現9進製導致在此進製的情況。所以我們要不斷地往前面找,如果又可以五入並且還有次數那就五入,如果有9可以進製那就進製。但是細節還是有點多的。首先五入只能在小數點後,同時進製時如果跨過了小數點那麼要加在整數上,如果小數全部進完了那就要省略小數點。具體的細節還是看**吧,細節真的很多。
#include#includeusing namespace std;
const int n=2e5+5;
char s[n];
int n,m,f1,st;
int main()
if(s[i]=='.')
f1=1;
} if(!st)
}else
f1=0;
} for(n=0;s[n+1];++n);
if(s[n]=='.')
s[n]=0;
if(s[0]=='0')
printf("%s",s+1);
else
printf("%s",s);
return 0;
}
可以比賽調對的人真的很強。 奇怪奇怪的問題
由於需求,我自己寫了乙個mydialog extends dialog 在dialog裡面寫了乙個handler,用來更新dialog上的字。第二次更新介面,需要dialog比第一次變大點。可是dialog在activity裡面顯示,如果activity不掛後台的話,更新很正常。但是我把activi...
奇怪的比賽
某電視台舉辦了低碳生活大獎賽。題目的計分規則相當奇怪 每位選手需要回答10個問題 其編號為1到10 越後面越有難度。答對的,當前分數翻倍 答錯了則扣掉與題號相同的分數 選手必須回答問題,不回答按錯誤處理 每位選手都有乙個起步的分數為10分。某獲勝選手最終得分剛好是100分,如果不讓你看比賽過程,你能...
奇怪的比賽
include include include include include includeusing namespace std const int target 100 int globalcnt 0 int cnt 11 int next int id,int cur 開始答第id道題 in...