IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> P2026 求一次函数解析式【题解】 -> 正文阅读

[数据结构与算法]P2026 求一次函数解析式【题解】

小 模 拟 被 我 做 成 了 大 模 拟 题 a w a 。 {\color{green}{小模拟被我做成了大模拟题awa。}} awa

题意解析:

给出平面上两个定点 ( x 1 , y 1 ) (x_1,y_1) (x1?,y1?) ( x 2 , y 2 ) (x_2,y_2) (x2?,y2?),求出过这两个点的一次函数的解析式。

解题思路:

首先明确题目类型,这是一道模拟题柯我最不擅长模拟题了

再看数据范围,大概均在整型范围内,但这题最坑的点不是毒瘤数据,而是各种特判:

1. 由 于 是 一 次 函 数 , 不 需 要 考 虑 斜 率 不 存 在 的 情 况 。 1. 由于是一次函数,不需要考虑斜率不存在的情况。 1.
2. 样 例 由 分 数 给 出 , 所 以 我 们 要 时 刻 保 持 分 子 和 分 母 的 互 质 ( g c d ) 2.样例由分数给出,所以我们要时刻保持分子和分母的互质(gcd) 2.(gcd)
3. 求 最 大 公 约 数 的 时 候 要 化 成 正 数 , 运 算 时 要 化 回 来 。 3.求最大公约数的时候要化成正数,运算时要化回来。 3.
4. b = 0 时 不 需 输 出 。 4.b=0时不需输出。 4.b=0
5. 整 数 后 面 跟 字 母 无 乘 号 , 分 数 后 面 有 。 5.整数后面跟字母无乘号,分数后面有。 5.

考虑了以上几种情况,我们就可以考虑具体的代码实现了。根据高中解析几何相关知识,我们定义
{ d x = x 2 ? x 1 d y = y 2 ? y 1 \begin{cases} dx=x_2-x_1\\ dy=y_2-y_1 \end{cases} {dx=x2??x1?dy=y2??y1??

那么斜率
k = d y d x k=\frac{dy}{dx} k=dxdy?

题目要输出斜截式,我们在算出斜率的情况下,根据
y 0 = k x 0 + b y_0=kx_0+b y0?=kx0?+b
移项得
b = y 0 ? d y x 0 d x b=y_0-\frac{dyx_0}{dx} b=y0??dxdyx0??

此时题目中要求的量我们都求出来了,现在只需注意以上的几点特判,处理最终的答案即可。

过程艰辛。

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int x1,y1,x2,y2,flag=0;
	cin>>x1>>y1>>x2>>y2;
	int dy=y1-y2,dx=x1-x2;
	int devide=__gcd(abs(dx),abs(dy));dy/=devide;dx/=devide;
	cout<<"y=";
	if(dy*dx<0)
	{
		flag=1;
		cout<<"-";
	}
	if(dy%dx==0) cout<<(abs(dy/dx));
	else cout<<abs(dy)<<"/"<<abs(dx)<<"*";
	cout<<"x";
	int a=dx*y1-dy*x1,b=dx;
	if(a==0)
	{
		cout<<endl;
		return 0;
	}
	if(a*b<0) cout<<"-";
	else cout<<"+";
	devide=__gcd(abs(a),abs(b));a/=devide;b/=devide;
	if(a%b==0) cout<<abs(a/b);
	else cout<<abs(a)<<"/"<<abs(b);
	cout<<endl;
	return 0;
}

这里的欧几里得函数为C++库里自带的,也可以手写。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-17 12:14:11  更:2021-10-17 12:14:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:29:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码