八十分求助,测试数据0明明是一样的但是就是过不了QAQ

P1553 数字反转(升级版)

@[jkluio1](/user/1077407) 输入0.11时会输出.11 代码看不懂,太乱了 ------------ _~~(其实就是想睡觉)~~_ 头文件没有<string.h>我都不知道你咋过得编译 第五行这个#if 1有什么特别之处吗,平白增加错误
by Fish_Love_Water @ 2024-03-23 21:39:02


@[Fish_Love_Water](/user/1109550) 但是我有string呀,然后那个if1是我分段的,忘记删了哈哈,方便留个联系方式探讨下嘛,现在90了,然后小说开头也能过,但是还是不能ac
by jkluio1 @ 2024-03-23 21:48:33


``` #include<iostream> #include<cstring> #include<cmath> #include<cstdio> #include<cstdlib> #include<string> #include<sstream> #include<vector> #pragma warning (disable:4996) using namespace std; int main() { char s[100]; vector<char>sp1, sp2; int flag1=0,flag2=0,i = 0, j = 0, k = 0; cin >> s; if (s[0] == '0') { cout << '0'; if (s[1] == '%') cout << '%'; if (s[1] == '.') { if (strlen(s) == 3) { cout << ".0"; return 0; } cout << '.'; int t = strlen(s)-1; for (i=t; i > 1; i--) sp1.push_back(s[i]); int temp = sp1.size() - 1; while (sp1[temp] == '0') { sp1.pop_back(); temp--; } for (i = 0;i <sp1.size(); i++) cout << sp1[i]; } return 0; } int t=strlen(s); for (i=t-1;i>=0;i--) { if (s[i] == '%') continue; if (s[i] < '0' || s[i] >'9') break; sp1.push_back(s[i]); } if(s[t-1]=='%') sp1.push_back(s[t-1]); if (i==-1) { for (j = 0; j <sp1.size(); j++) { if (sp1[0] == '0'&&flag1==0) while (sp1[j]== '0') { j++; flag1= 1; } cout << sp1[j]; } return 0; }//int ,% for (j = i - 1; j >= 0; j--) sp2.push_back(s[j]); sp2.push_back(s[i]); for (k = 0; k < sp2.size(); k++)//分子,浮点数整数部分; { if (sp2[0] == '0' && flag1 == 0) { while (sp2[k] == '0') { k++; flag1 = 1; } } cout << sp2[k]; } if (s[i] == '/')//分母 { for (k = 0; k < sp1.size(); k++) { if (sp1[0] == '0' && flag2 == 0) { while (sp1[k] == '0') k++; flag2 = 1; } cout << sp1[k]; } } else { int t = sp1.size() - 1; if (sp1.size() == 1) { cout << 0; return 0; } if (sp1[t]== '0'&&flag2==0) while (sp1[t] == '0') { sp1.pop_back(); flag2 = 1; t--; } for (k = 0; k < sp1.size(); k++) cout << sp1[k]; } } ``` @[Fish_Love_Water](/user/1109550) 这是源码,你说的那个测试点过了QAQ
by jkluio1 @ 2024-03-23 21:50:29


@[jkluio1](/user/1077407) ?洛谷就行了吧
by Fish_Love_Water @ 2024-03-23 22:06:43


@[jkluio1](/user/1077407) 其实,你有没想过这个0/114514呢他其实不等于0,他等于0/415411 ~~就很奇葩~~
by Fish_Love_Water @ 2024-03-23 22:16:04


@[jkluio1](/user/1077407) 我自己又写了一遍 ```cpp #include<bits/stdc++.h> using namespace std; char s[110]; int aa=1,b,c,f,x; int main(){ //判断是整数或百分数(aa==1) 小数或分数(bb==1) while(cin>>s[++f]) if(s[f]=='.'||s[f]=='/') aa=0,b=f; //转换整数 、百分数 if(aa){ if(s[f-1]=='%') c++; for(int i=f-1;i>0;i--) if(s[i]!='0'&&s[i]!='%'||x&&s[i]!='%'||f-1==1||(c&&f-1==2)) x=1,cout<<s[i]; if(c) cout<<"%"; } //转换小数、分数 else{ for(int i=b-1;i>0;i--) if(s[i]!='0'||b-1==1||x) x=1,cout<<s[i]; cout<<s[b]; int i=b+1; while(s[i]=='0'&&f-1!=b+1) i++; for(int k=f-1;k>=i;k--) if(s[i]!='0'||f-1==b+1||x) x=1,cout<<s[k]; } return 0; } ``` 差不多这样,还得改改,输入99/09时会输出99/9,这显然是错的,靠你了
by Fish_Love_Water @ 2024-03-23 23:31:45


@[Fish_Love_Water](/user/1109550) 这这这,这不合理 QAQ
by jkluio1 @ 2024-03-24 10:17:49


|