文章

2

粉丝

0

获赞

12

访问

696

头像
解一元一次方程 题解:
P1811 复旦大学机试
发布于2025年3月16日 19:24
阅读数 394

为什么我这个只能过80%?

思路:分别计算等式左边的x系数l_x和常数l_n,右边x系数r_x和常数r_n。然后进行判断是否有解,若有解,res=(r_n-l_n)/(l_x-r_x)。

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N=55;

typedef long long LL;

string s;
LL l_x,r_x,l_n,r_n;

int main()
{
	cin>>s;
	int n=s.size();
	int i;
	for(i=0;i<n;i++)
	{
		if(s[i]!='=')
		{
			if(isdigit(s[i]))
			{
				char c;
				if(i) c=s[i-1];
				else c='+';
				int j=i;
				LL val=0;
				while(j<n && isdigit(s[j])) val=val*10+s[j++]-'0';
				if(c=='+' && s[j]=='x') l_x+=val;
				else if(c=='-' && s[j]=='x') l_x-=val;
				else if(c=='+' && s[j]!='x') l_n+=val;
				else if(c=='-' && s[j]!='x') l_n-=val;
				i=j-1; 
			}
			else if(s[i]=='x' && (i==0 || s[i-1]=='+')) l_x+=1;
			else if(s[i]=='x' && s[i-1]=='-') l_x-=1;
		}
		else break;
	}
	
	for(++i;i<n;i++)
	{
		if(isdigit(s[i]))
		{
			char c=...
登录查看完整内容


登录后发布评论

2 条评论
快乐小土狗
2025年3月18日 17:18


no solution多了一个s

赞(0)

倪克斯 : 回复 快乐小土狗: 我丢,还真是,感谢兄弟啊,这bug都快给我整吐了昨天

2025年3月18日 21:11