轻松应对数学难题:二元一次方程组与一元三次方程的解法解析
最编程
2024-08-10 22:47:50
...
说明
形如: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;
}