强行模拟 纪念一下……
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\n",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\n",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\n",ll); 39 int from=0; 40 while(true){ 41 if(strr[from]==‘0‘) from++; 42 else break; 43 } 44 // printf("from==%d\n",from); 45 if(strr[j-1]==‘0‘) from--; 46 if(from<0) from=0; 47 int lenn=strlen(strr); 48 // printf("%d %c %c\n",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\n"); 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\n"); 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\n"); 75 for(int q=from;q<i;q++) 76 printf("%c",strr[q]); 77 puts(""); 78 } 79 } 80 return 0; 81 }
时间: 2024-10-10 05:11:50