题解:P4429 [BJOI2018] 染色

· · 题解


#include<bits/stdc++.h>
using namespace std;
string s;
int i;
bool flag_zero,flag_fu,flag_jw;
signed main(){
    cin>>s;
    for(i=0;s[i];i++)
        if(s[i]=='.')break;
    if(i==s.length()){
        cout<<s<<'.';
        for(int i=1;i<=12;i++)cout<<'0';
        return 0;
    }
    if(s[0]=='0')flag_zero=true;
    if(s[0]=='-')s[0]='0',flag_fu=true;
    for(int j=1;j<=14;j++)s+='0';
    if(s[i+13]>='5')s[i+12]++;
    for(int j=i+12;j>i;j--)if(s[j]>'9')s[j]='0',s[j-1]++;
    if(s[i]>'.')s[i]='.',s[i-1]++;
    for(;i>=0;i--)if(s[i]>'9'){
        if(i==0)flag_jw=true;
        else s[i-1]++;
        s[i]='0';
    }
    if(flag_fu)cout<<'-';
    if(flag_jw)cout<<"10";
    else if(flag_zero)cout<<'0';
    for(i=(s[0]=='0');s[i]!='.';i++)cout<<s[i];
    cout<<'.';
    for(int j=1;j<=12;j++)cout<<s[i+j];

bool flag_zero,flag_fu,flag_jw;
signed main(){
    cin>>s;
    for(i=0;s[i];i++)
        if(s[i]=='.')break;
    if(i==s.length()){
        cout<<s<<'.';
        for(int i=1;i<=12;i++)cout<<'0';
        return 0;
    }
    if(s[0]=='0')flag_zero=true;
    if(s[0]=='-')s[0]='0',flag_fu=true;
    for(int j=1;j<=14;j++)s+='0';
    if(s[i+13]>='5')s[i+12]++;
    for(int j=i+12;j>i;j--)if(s[j]>'9')s[j]='0',s[j-1]++;
    if(s[i]>'.')s[i]='.',s[i-1]++;
    for(;i>=0;i--)if(s[i]>'9'){
        if(i==0)flag_jw=true;
        else s[i-1]++;
        s[i]='0';
    }
    if(flag_fu)cout<<'-';
    if(flag_jw)cout<<"10";
    else if(flag_zero)cout<<'0';
    for(i=(s[0]=='0');s[i]!='.';i++)cout<<s[i];
    cout<<'.';
    for(int j=1;j<=12;j++)cout<<s[i+j];
}