社区讨论

75分求调,用unsigned会re

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

讨论操作

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

当前回复
3 条
当前快照
1 份
快照标识符
@m2ve2m7o
此快照首次捕获于
2024/10/30 12:41
去年
此快照最后确认于
2025/11/04 15:42
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
#define int unsigned long long
using namespace std;
string s;
vector<char> q;
int cnt;
vector<char> qq1;
int cnt1;
vector<char> qq2;
int cnt2;
vector<char> qq3;
int cnt3;
int flag=0;
signed main()
{
	cin>>s;
	
	int len=s.size();
	for(int i=0;i<len;i++)
	{
		if(s[i]>='0'&&s[i]<='9'&&flag==0)
		{
			q.push_back(s[i]);
			cnt++;
		}
		if(s[i]=='.')
		
		
		{
			flag=1;
		}
		if(s[i]=='/')
		{
			flag=2;
		}
		if(s[i]=='%')
		{
			flag=3;
			
			
			
		}
		
		if(s[i]>='0'&&s[i]<='9'&&flag==1)
		{
			qq1.push_back(s[i]);
			cnt1++;
		}
		if(s[i]>='0'&&s[i]<='9'&&flag==2)
		{
			qq2.push_back(s[i]);
			cnt2++;
		}
		
	}
	
	if(s=="0")
	
	{
		cout<<0;
		return 0;
	}
	
	if(flag==0)
	{
		int ze=0;
		int mm=0;
		
		for(int i=cnt-1;i>=0;i--)
		{
			if(q[i]=='0'&&ze==0)
			{
				mm++;
			
			}
			if(q[i]>='1'&&q[i]<='9')
			{
				ze=1;
				break;
			}
		}
		for(int i=cnt-mm-1;i>=0;i--)
		{
			cout<<q[i];
			
		}
		return 0;
	}
	if(flag==1)
	{
		int ze=0;
		if(cnt==1&&q[0]=='0')
		{
			cout<<0;
		}
		else
		{
			for(int i=cnt-1;i>=0;i--)
			{
				if(q[i]=='0'&&ze==0)
				{
					cnt--;
				}
				if(q[i]>='1'&&q[i]<='9')
				{
					ze=1;
					break;
				}
			}
			for(int i=cnt-1;i>=0;i--)
			{
				cout<<q[i];
				
			}
		}
		
		cout<<".";
		int ze1=0;
		int mm=0;;
		for(int i=0;i<cnt1;i++)
		{
			if(qq1[i]=='0'&&ze1==0)
			{
				mm++;
			}
			if(qq1[i]>='1'&&qq1[i]<='9')
			{
				ze1=1;
				break;
			}
		}
		for(int i=cnt1-1;i>=mm;i--)
		{
			cout<<qq1[i];
			
		}
		return 0;
	}
	if(flag==2)
	{
		int ze=0;
		if(cnt==1&&q[0]=='0')
		{
			cout<<0;
		}
		else
		{
			for(int i=cnt-1;i>=0;i--)
			{
				if(q[i]=='0'&&ze==0)
				{
					cnt--;
				}
				if(q[i]>='1'&&q[i]<='9')
				{
					ze=1;
					break;
				}
			}
			for(int i=cnt-1;i>=0;i--)
			{
				cout<<q[i];
				
			}
		}
		
		cout<<"/";
		
		int ze1=0;
		int mm=0;;
		for(int i=0;i<cnt2;i++)
		{
			if(qq2[i]=='0'&&ze1==0)
			{
				mm++;
			}
			if(qq2[i]>='1'&&qq2[i]<='9')
			{
				ze1=1;
				break;
			}
		}
		for(int i=cnt2-1;i>=mm;i--)
		{
			cout<<qq2[i];
			
		}
		return 0;
	}
	if(flag==3)
	{
		int ze=0;
		int mm=0;
		
		for(int i=cnt-1;i>=0;i--)
		{
			if(q[i]=='0'&&ze==0)
			{
				mm++;
			
			
			}
			if(q[i]>='1'&&q[i]<='9')
			{
				ze=1;
		
				break;
			}
		}
		for(int i=cnt-mm-1;i>=0;i--)
		{
			cout<<q[i];
		
			
		}
		cout<<"%";
		return 0;//百分号依然在try
	}
	return 0;
}

回复

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

正在加载回复...