社区讨论

哪里错了

P1553数字反转(升级版)参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mhjtil2z
此快照首次捕获于
2025/11/04 08:15
4 个月前
此快照最后确认于
2025/11/04 08:15
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
void AC(string a)
{
	int ans=0,tot=0,qd=0;
	for(int i=0;i<a.size();i++)
	{
		if(a[i]!='.'&&qd==0)
		ans++;
		else if(a[i]=='.')
		qd=1;
		else
		tot++;
	}
	for(int i=ans-1;i>=0;i--)
	if((a[i]=='0'&&a[i+1]=='0')||(i==a.size()&&a[i]=='0'))
	continue;
	else
	cout<<a[i];
	cout<<'.';
	for(int i=a.size();a[i]!='.';i--)
	if((a[i]=='0'&&a[i+1]=='0')||(i==a.size()&&a[i]=='0'))
	continue;
	else
	cout<<a[i];
}
void WA(string a)
{
	string ans;
	for(int i=a.size()-1,j=0;i>=0;i--,j++)
	ans+=a[i];
	if(ans[0]=='0')
	ans.erase(0,ans.find_first_not_of('0'));
	cout<<ans;
}
void TLE(string a)
{
	int ans=0,tot=0,qd=0;
	for(int i=0;i<a.size();i++)
	{
		if(a[i]!='/'&&qd==0)
		ans++;
		else if(a[i]=='/')
		qd=1;
		else
		tot++;
	}
	for(int i=ans-1;i>=0;i--)
	if(a[i]!='0')
	cout<<a[i];
	cout<<"/";
	for(int i=a.size();a[i]!='/';i--)
	if((a[i]=='0'&&a[i+1]=='0')||(i==a.size()&&a[i]=='0'))
	continue;
	else
	cout<<a[i];
}
void RE(string a)
{
	for(int i=a.size()-2;i>=0;i--)
	if((a[i]=='0'&&a[i+1]=='0')||(i==a.size()-2&&a[i]=='0'))
	continue;
	else
	cout<<a[i];
	cout<<"%";
}
int main()
{
	string a;
	cin>>a;
	if(a=="0")
	{
		cout<<"0";
		return 0; 
	}
	for(int i=0;i<a.size();i++)
	{
		if(a[i]=='.')
		{
			AC(a);
			return 0;
		}
		else if(a[i]=='/')
		{
			TLE(a);
			return 0;
		}
		else if(a[i]=='%')
		{
			RE(a);
			return 0;
		}
	}
	WA(a);
	return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...