P2026 求一次函数解析式

    技术2022-07-10  94

    题目背景 做数学寒假作业的怨念……

    题目描述 给定两个整点的坐标,求它们所在直线的函数解析式(一次函数)。

    输入格式 输入共两行。

    第一行有两个整数x1,y1。表示第一个整点的坐标为(x1,y1)

    第二行有两个整数x2,y2。表示第二个整点的坐标为(x2,y2)

    输出格式 输出共一行,即这个函数解析式。

    输入输出样例 输入 #1

    3 6 2 4

    输出 #1

    y=2x

    输入 #2

    3 5 2 7

    输出 #2

    y=-2x+11

    输入 #3

    3 -1 5 -2

    输出 #3

    y=-1/2*x+1/2

    说明/提示 二乘X表示为2x

    二分之一乘X表示为1/2*x

    #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<queue> #include<cstdio> #include<math.h> #include<climits> #include <map> using namespace std; int k,n,m; int xa , ya; int xb ,yb; int a,b; int main(){ ios_base::sync_with_stdio(0); // 让cin变快 cin.tie(0); // 让cin变快 cin >> xa >> ya ; cin >> xb >> yb; cout << "y="; if((yb-ya)%(xb-xa) == 0 ) { k = (yb-ya)/(xb-xa); b = yb-k*xb; if(b != 0) { if(k != -1 && k != 1) { cout << k << "x+"<<b; } if(k == 1) cout << "x+" << b; if(k == -1) cout << "-x+" << b; } else { if(k != -1 && k != 1) { cout << k << "x"; } if(k == 1) cout << "x"; if(k == -1) cout << "-x"; } } else { k = (yb-ya)/(xb-xa) + (yb-ya)%(xb-xa); if((yb*xa-ya*xb)/(xa-xb) != 0 || (yb*xa-ya*xb)%(xa-xb) != 0) { if((yb*xa-ya*xb) < 0 && (xa-xb)<0) { cout << (yb-ya) << "/" << (xb-xa) << "*x+" << (ya*xb-yb*xa) << "/" << (xb-xa); } if((yb*xa-ya*xb) < 0 && (xa-xb)>0) { cout << (yb-ya) << "/" << (xb-xa) << "*x" << (yb*xa-ya*xb) << "/" << (xa-xb); } if((yb*xa-ya*xb) > 0 && (xa-xb)<0) { cout << (yb-ya) << "/" << (xb-xa) << "*x" << (ya*xb-yb*xa) << "/" << (xb-xa); } if((yb*xa-ya*xb) > 0 && (xa-xb) > 0) { cout << (yb-ya) << "/" << (xb-xa) << "*x+" << (yb*xa-ya*xb) << "/" << (xa-xb); } } else { cout << (yb-ya) << "/" << (xb-xa); } } return 0; }
    Processed: 0.009, SQL: 9