在历经n个小时的修改和调试后, 我用纯暴力算法ac了这道题。 萌新不会算法,所以只能用暴力ac。 以下是代码,希望大佬能给我点建议。
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
char a[100];
int g;
int n;
cin>>a;
int p=strlen(a);
for(int i=0;a[i]!='\0';i++)
{
if(a[i]=='.')
{
n=2;
g=i;
break;
}
else if(a[i]=='/')
{
n=3;
g=i;
break;
}
else if(a[i]=='%')
{
n=4;
break;
}
else
{
n=1;
}
}
if(n==1)
{
if(p==1&&a[0]=='0') cout<<0;
else
{
if(a[p-1]!='0')
{
for(int i=p-1;i>=0;i--)
cout<<a[i];
}
else
{
int j=1;
for(int i=p-1;a[i]=='0'&&a[i-1]=='0';i--) j++;
for(int i=p-j-1;i>=0;i--)
cout<<a[i];
}
}
}
if(n==2)
{
if(g==1&&a[0]=='0') cout<<0;
else
{
if(a[g-1]!='0')
{
cout<<a[g-1];
}
for(int i=g-2;i>=0;i--)
{
if(a[i]!='0'||a[i+1]!='0')
cout<<a[i];
}
}
cout<<'.' ;
if(a[g+1]=='0'&&p-1-g==1) cout<<0;
else
{
int j=0;
if(a[g+1]=='0') j++;
for(int i=g+1;a[i]=='0'&&a[i+1]=='0';i++) j++;
for(int i=p-1;i>=g+1+j;i--)
{
cout<<a[i];
}
}
}
if(n==3)
{
if(p-1-g==1&&a[g+1]=='0') return 0;
if(g==1&&a[0]=='0') cout<<0;
else
{
if(a[g-1]!='0')
{
for(int i=g-1;i>=0;i--)
cout<<a[i];
}
else
{
int j=1;
for(int i=g-1;a[i]=='0'&&a[i-1]=='0';i--) j++;
for(int i=g-j-1;i>=0;i--)
cout<<a[i];
}
}
cout<<'/';
if(p-1-g==1&&a[g+1]=='0') return 0;
else
{
if(a[p-1]!='0')
{
for(int i=p-1;i>=g+1;i--)
cout<<a[i];
}
else
{
int j=1;
for(int i=p-1;a[i]=='0'&&a[i-1]=='0';i--) j++;
for(int i=p-j-1;i>=g+1;i--)
cout<<a[i];
}
}
}
if(n==4)
{
p=p-1;
if(p==1&&a[0]=='0') cout<<0;
else
{
if(a[p-1]!='0')
{
cout<<a[p-1];
}
for(int i=p-2;i>=0;i--)
{
if(a[i]!='0'||a[i+1]!='0')
cout<<a[i];
}
}
cout<<'%';
}
return 0;
}