解二元一次方程组,解一元三次方程,帮你解决困难的数学题目

说明
形如:ax3+bx2+cx+d=0ax
3
+bx
2
+cx+d=0这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值 >1。要求它的三个实根。

输入格式
一行四个实数:a,b,c,d。a,b,c,d。

输出格式
一行由小到大输出这三个实根(根与根之间留有空格),并精确到小数点后2位。

#include<bits/stdc++.h>
using namespace std;
float a,b,c,d,x,g[4][3];
int g1=1;
int main(){
    
    
//	freopen("B.in","r",stdin); 
//	freopen("B.out","w",stdout);
	cin>>a>>b>>c>>d;
	d=0-d;
	bool fir,sec;
	for(float i=-100;i<=100;i++){
    
    
		float sum=a*i*i*i+b*i*i+c*i;
		sec=sum>d;
		if(fir!=sec && i!=-100){
    
    
			g[g1][1]=i-1,g[g1][2]=i,g1++;
		}
		fir=sum>d;
	}
	float k;
	long double eps=pow(10,-3);
	for(int i=1;i<=3;i++){
    
    
		for(k=g[i][1];k<=g[i][2];k+=0.01){
    
    
			float sum=a*k*k*k+b*k*k+c*k;
			if(abs(sum-d)<=eps){
    
    
				cout<<fixed<<setprecision(2)<<k<<" ";
				break;
			}
		}
	}
	return 0;
}

描述
给定一个二元一次方程组,形如:
ax+by=c;
dx+ey=f;
x,y代表未知数,a,b,c,d,e,f为参数,求解x,y。

输入格式
输入包含六个整数:a,b,c,d,e,f。

输出格式
输出为方程组的解,一定是两个整数x,y。

#include<bits/stdc++.h>
using namespace std;
long long a,b,c,d,e,f;
long long x,y;
int main()
{
    
    
	cin>>a>>b>>c>>d>>e>>f;//ax+by=c;dx+ey=f;
	long long k;
	k=max(b,e);
	for(int i=0;i<=b*e;i+=k)
	{
    
    
		if(i%b==0&&i%e==0&&i!=0)
		{
    
    
			k=i;
			break;
		}
	}
	//10.求最小公倍数k 
	int bb=k/b;
	int eb=k/e;
	//2.统一系数,准备消元  
	//(a*bb-d*eb)x=(c*bb-f*eb);
	x=(c*bb-f*eb)/(a*bb-d*eb);
	//ax+by=c;
	y=(c-a*x)/b;
	//4.解方程  
	cout<<x<<" "<<y;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/yaosichengalpha/article/details/130977333