• 题解 P2026 【求一次函数解析式】


    高中方式轻松解决这个模拟题。

    首先我们了解斜率的简单求法:

    [k= {y2-y1 over x2-x1}{=}{Delta y over Delta x} ]

    然后我们了解到让我们求解一次函数解析式(斜截式),就是说(k)值一定存在!
    所以这个题我们可以用点斜式解决。

    点斜式又是什么?

    $$y-y1=k(x-x1)$$

    条件:基于k值和点((x1,y1))

    好,这样就能求。
    我们再推导一下,把点斜式化成斜截式:

    [ecause y-y1=kcdot x-kcdot x1 ]

    [ herefore y=kcdot x+(y1-kcdot x1) ]

    [ herefore b=y1-kcdot x1 ]

    不多说,k和b都有可能是分数。

    但是我们有黑科技gcd啊!这里安利递推gcd。

    inline int gcd(int a,int b)
    {
    	while (b!=0){int c=b;b=a%b;a=c;}
    	return a;
    }
    

    因为输入的数据都是整数,所以我们不用担心b通分的毒瘤问题。

    [ecause k={Delta yover Delta x}spacespacespacespace herefore b={y1cdot Delta x-Delta ycdot x1over Delta x} ]

    好!接下来大家都知道该怎么做了吧!
    Code:

    //(Mode:C++)
    //Author is Jelly_Goat.
    //No cheat because it's very easy to understand.
    #include <bits/stdc++.h>
    #define ori ={1,1}//初始化,懒得打函数
    using namespace std;
    
    struct fenshu{
    	int fenzi,fenmu;
    	fenshu a(void);
    }k ori,b ori;
    inline int gcd(int a,int b)
    {
    	while (b!=0){int c=b;b=a%b;a=c;}
    	return a;
    }
    void work(int x1,int y1,int x2,int y2)
    {
    	k.fenzi=y2-y1,k.fenmu=x2-x1;//k=Δy/Δx
    	int temp=gcd(k.fenzi,k.fenmu);
    	k.fenzi/=temp,k.fenmu/=temp;//化简k
    	//推导b:(y-y1)=k(x-x1) -> y=kx+(y1-k*x1) -> b=y1-k*x1
    	b.fenzi=k.fenmu*y1-k.fenzi*x1,b.fenmu=k.fenmu;
    	temp=gcd(b.fenzi,b.fenmu);
    	b.fenzi/=temp,b.fenmu/=temp;//化简b
    	printf("y=%d",&k.fenzi);
    	if (k.fenmu!=1){printf("/%d",&k.fenmu);}
    	printf("*x");
    	if (b.fenzi!=0)
    	{
    		printf("+%d",&b.fenzi);
    		if (b.fenmu!=1){printf("/%d",&b.fenmu);}
    	}
    }
    int main()
    {
    	int x1,x2,y1,y2;
    	scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
    	work(x1,y1,x2,y2);
    	return 0;
    }
    

    然鹅一样的防作弊系统。(都懂)

    Thanks for your reading! End here.

  • 相关阅读:
    28. Implement strStr()(KMP字符串匹配算法)
    60. Permutation Sequence(求全排列的第k个排列)
    47. Permutations II (全排列有重复的元素)
    46. Permutations (全排列)
    3. Longest Substring Without Repeating Characters(最长子串,双指针+hash)
    Python 一行代码实现并行
    1. Two Sum
    236. Lowest Common Ancestor of a Binary Tree(最低公共祖先,难理解)
    ssm项目配置多个数据源
    SpringMVC架构实现原理
  • 原文地址:https://www.cnblogs.com/jelly123/p/10392034.html
Copyright © 2020-2023  润新知