题解
2024-05-05 18:06:10
发布于:广东
13阅读
0回复
0点赞
#include <iostream>
#include <cstdio>
using namespace std;
struct node{
int x, y;
};
int x1, y1, x2, y2, x_, y_;
int gcd(int x, int y){//求最大公因数
if(x < 0) x = -x;
if(y < 0) y = -y;
if(x < y) swap(x, y);
if(y == 0) return x;
return gcd(y, x % y);
}void yuefen(int x, int y){//约分
int cd = gcd(x, y);
x_ = x / cd, y_ = y / cd;
}
int main(){
cin >> x1 >> y1 >> x2 >> y2;
if(y1 == y2){//没用的东西
cout << "y=" << y1;
return 0;
}
cout << "y=";
//求x项系数
x_ = x1 - x2, y_ = y1 - y2;//分母,分子
if(x_ < 0) x_ = -x_, y_ = -y_;
yuefen(x_, y_);
if(x_ == 1){//如果分母为1不用输出分母
if(y_ == 1) cout << 'x';
else if(y_ == -1) cout << "-x";
else cout << y_ << 'x';
}else{
printf("%d/%d*x", y_, x_);//输出分数
}
//求常数项
int yy = y1 * x_ - y_ * x1;
if(yy == 0) return 0;
yuefen(x_, yy);
if(y_ > 0) cout << '+';//如果大于0要补加号
if(x_ == 1) cout << y_;//同理
else printf("%d/%d", y_, x_);
return 0;
}
时间复杂度:
这里空空如也
有帮助,赞一个