CodeForces 697B Barnicle 模拟

强行模拟 纪念一下……

 1 #include<stdio.h>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<math.h>
 5 #include<string.h>
 6 #include<string>
 7 #include<map>
 8 #include<vector>
 9 #include<queue>
10 #define M(a,b) memset(a,b,sizeof(a))
11 using namespace std;
12 char str[505];
13 char strr[505];
14 queue<int>take;
15 int main(){
16     while(~scanf("%s",str)){
17         M(strr,NULL);
18         int len=strlen(str);
19         int i=0,j;
20         while(true){
21             if(str[i]=='e') break;
22             else strr[i]=str[i];
23             if(str[i]=='.') j=i;
24             i++;
25         }
26 //        printf("%s
",strr);
27         int pow_=len-1-i;
28         int ll=str[i+1]-'0';
29         for(int k=2;str[i+k];k++){
30             ll*=10;
31             ll+=str[i+k]-'0';
32         }
33 //        printf("ll==%d
",ll);
34         while((strr[j+1]>='0'&&strr[j+1]<='9')&&ll){
35             swap(strr[j],strr[j+1]);
36             j++,ll--;
37         }
38 //        printf("ll==%d
",ll);
39         int from=0;
40         while(true){
41             if(strr[from]=='0') from++;
42             else break;
43         }
44 //        printf("from==%d
",from);
45         if(strr[j-1]=='0') from--;
46         if(from<0) from=0;
47         int lenn=strlen(strr);
48 //        printf("%d %c %c
",lenn,strr[lenn-1],strr[lenn-2]);
49         if(strr[lenn-1]=='0' && strr[lenn-2]=='.'){
50             for(int q=0;q<lenn-2;q++)
51                 printf("%c",strr[q]);
52             puts("");
53             continue;
54         }
55         if(j==i-1&&ll==0){
56 //            printf("222223
");
57             for(int q=from;q<i-1;q++)
58                 printf("%c",strr[q]);
59             puts("");
60         }
61         else if(ll!=0){
62 //            printf("1111111
");
63             for(int q=0;strr[q];q++){
64                 if(strr[q]=='.') break;
65                 else printf("%c",strr[q]);
66             }
67             while(ll){
68                 printf("0");
69                 ll--;
70             }
71             puts("");
72         }
73         else{
74 //            printf("22222
");
75             for(int q=from;q<i;q++)
76                 printf("%c",strr[q]);
77             puts("");
78         }
79     }
80     return 0;
81 }
原文地址:https://www.cnblogs.com/general10/p/5754631.html