Efim與奇怪的成績

2022-10-09 18:51:11 字數 1470 閱讀 3549

【題目描述】

眾所周知,每當我們看見自己糟糕的成績時,我們總希望以奇怪的方式將其四捨五入。

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...