85分#6#7#8有误
查看原帖
85分#6#7#8有误
1513931
code_jay楼主2025/7/26 22:14

代码如下 希望大佬指点 我下了#6的数据 我的输出明明和它一样啊 不知道为什么wa

#include <iostream>
#include <string>
#include <algorithm>
#include <cmath>
using namespace std;
long long stringtointreverse(string s)
{
	long long n=0;
	for (int i=s.length()-1;i>=0;i--)
	{
		n=n*10+s[i]-'0';
	}
	return n;
}
int main()
{
	string s;
	cin >> s;
	int flag=1;
	int idx2=0;
	int idx3=0;
	int idx4=0;
	for (int i=0;i<s.length();i++)
	{
		if (s[i]=='.')
		{
			flag=2;
			idx2=i;
			break;
		}
		else if (s[i]=='/')
		{
			flag=3;
			idx3=i;
			break;
		}
		else if (s[i]=='%')
		{
			flag=4;
			idx4=i;
			break;
		} 
	}
	switch (flag)
	{
		case 1:{	
			cout << stringtointreverse(s) << endl;
			break;
		}
		case 2:{
			string sub1=s.substr(0,idx2);
			string sub2=s.substr(idx2+1,s.length()-1-idx2);
			int a=stringtointreverse(sub1);
			int b=stringtointreverse(sub2);
			long double c=a+b*pow(0.1,sub2.length());
			if (b!=0)
			{
				cout << c << endl;
			}
			else cout << a << ".0" << endl; 
			break; 
		}
		case 3:{
			string sub1=s.substr(0,idx3);
			string sub2=s.substr(idx3+1,s.length()-1-idx3);
			int a=stringtointreverse(sub1);
			int b=stringtointreverse(sub2);
			cout << a << '/' << b << endl;
			break;
		}
		case 4:{
			string sub1=s.substr(0,idx4);
			int a=stringtointreverse(sub1);
			cout << a << '%' << endl;
			break;
		}
	}
	return 0; 
}
2025/7/26 22:14
加载中...