【luogu2026】【数学】求一次函数解析式

38 篇文章 0 订阅

传送门

题目背景

做数学寒假作业的怨念……

题目描述

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

输入格式

输入共两行。

第一行有两个整数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


解题思路

垃圾子在线学习一次函数
y = kx + b
k = (y2 - y1) / (x2 / x1)
b = y1 - x1 *k
所以这题真的好水,可是我真的不会函数qwq

还有输出真的好复杂,可能是我太菜了


Code
#include <algorithm>
#include <iostream>
#include <cstdio>
#include <cmath>

using namespace std;

long long x1, y, x2, yy, kfz, kfm, bfz, bfm;

int main(){
	scanf ("%lld%lld%lld%lld", &x1, &y, &x2, &yy);
	if (x1 > x2)
	{
		swap (x1, x2);
		swap (y, yy);
	}
    kfz = (yy - y), kfm = (x2 - x1);
    bfz = y * kfm;
    bfz -= x1 * kfz, bfm = kfm;
    
    printf ("y=");
    if (abs(kfz) % kfm)
        printf ("%lld/%lld*x", kfz, kfm);
     else
     	printf ("%lldx", kfz / kfm);
    if (bfz != bfm && bfz)
    {
    	if (abs(bfz) % bfm)
    	{
    		if (bfz> 0) printf ("+%lld/%lld", bfz, bfm);
     	 	    else printf ("%lld/%lld", bfz , bfm);
		}
         else
         {
     	 	if (bfz / bfm > 0) printf ("+%lld", bfz / bfm);
     	 	    else printf ("%lld", bfz / bfm);
		 }
	}
} 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值