当前位置:网站首页>【暑期每日一题】洛谷 P2026 求一次函数解析式
【暑期每日一题】洛谷 P2026 求一次函数解析式
2022-07-01 04:47:00 【AC_Dragon】
题目链接:P2026 求一次函数解析式 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
题目背景
做数学寒假作业的怨念……
题目描述
给定两个整点的坐标,求它们所在直线的函数解析式(一次函数)。
输入格式
输入共两行。
第一行有两个整数x1,y1。表示第一个整点的坐标为(x1,y1)
第二行有两个整数x2,y2。表示第二个整点的坐标为(x2,y2)
输出格式
输出共一行,即这个函数解析式。
样例 #1
样例输入 #1
3 6
2 4样例输出 #1
y=2x样例 #2
样例输入 #2
3 5
2 7样例输出 #2
y=-2x+11样例 #3
样例输入 #3
3 -1
5 -2样例输出 #3
y=-1/2*x+1/2提示
二乘X表示为2x
二分之一乘X表示为1/2\*x
AC code:
#include<iostream>
#include<algorithm>
using namespace std;
// y=k*x+b;
// k=(y2-y1)/(x2-x1)
// b=y-k*x;
int main()
{
int x1,y1;
cin>>x1>>y1;
int x2,y2;
cin>>x2>>y2;
int k_fz,k_fm; // 斜率分子,分母
k_fz=y2-y1;
k_fm=x2-x1;
// 斜率为整数(截距一定也为整数)
if(k_fz%k_fm==0)
{
int b=y1-(k_fz/k_fm)*x1;
if(b>0)
cout<<"y="<<k_fz/k_fm<<"x"<<"+"<<b<<endl;
else if(b<0)
cout<<"y="<<k_fz/k_fm<<"x"<<b<<endl;
else
cout<<"y="<<k_fz/k_fm<<"x"<<endl;
return 0;
}
// 斜率为分数
if(k_fz*1.0/k_fm>0) // 斜率为正数
{
k_fz=abs(y2-y1);
k_fm=abs(x2-x1);
// 斜率化成最简分数
k_fz=k_fz/__gcd(k_fz,k_fm);
k_fm=k_fm/__gcd(k_fz,k_fm);
int b_fz,b_fm; // 截距分子,分母
b_fz=y1*k_fm-k_fz*x1;
b_fm=k_fm;
if(b_fz%b_fm==0) // 截距为整数
{
if(b_fz*1.0/b_fm>0)
cout<<"y="<<abs(k_fz)<<"/"<<abs(k_fm)<<"*x"<<"+"<<b_fz/b_fm<<endl;
else if(b_fz*1.0/b_fm<0)
cout<<"y="<<abs(k_fz)<<"/"<<abs(k_fm)<<"*x"<<b_fz/b_fm<<endl;
else
cout<<"y="<<abs(k_fz)<<"/"<<abs(k_fm)<<"*x"<<endl;
return 0;
}
if(b_fz*1.0/b_fm>0)
cout<<"y="<<abs(k_fz)<<"/"<<abs(k_fm)<<"*x"<<"+"<<abs(b_fz)/__gcd(abs(b_fz),abs(b_fm))<<"/"<<abs(b_fm)/__gcd(abs(b_fz),abs(b_fm))<<endl;
else if(b_fz*1.0/b_fm<0)
cout<<"y="<<abs(k_fz)<<"/"<<abs(k_fm)<<"*x"<<"-"<<abs(b_fz)/__gcd(abs(b_fz),abs(b_fm))<<"/"<<abs(b_fm)/__gcd(abs(b_fz),abs(b_fm))<<endl;
else
cout<<"y="<<abs(k_fz)<<"/"<<abs(k_fm)<<"*x"<<endl;
}
else // 斜率为负数
{
k_fz=abs(y2-y1);
k_fm=abs(x2-x1);
// 斜率化成最简分数
k_fz=k_fz/__gcd(k_fz,k_fm);
k_fm=k_fm/__gcd(k_fz,k_fm);
int b_fz,b_fm; // 截距分子,分母
b_fz=y1*k_fm+k_fz*x1; // 注意此时为 "+" 号 (因为斜率为负数)
b_fm=k_fm;
if(b_fz%b_fm==0) // 截距为整数
{
if(b_fz*1.0/b_fm>0)
cout<<"y="<<"-"<<abs(k_fz)<<"/"<<abs(k_fm)<<"*x"<<"+"<<b_fz/b_fm<<endl;
else if(b_fz*1.0/b_fm<0)
cout<<"y="<<"-"<<abs(k_fz)<<"/"<<abs(k_fm)<<"*x"<<b_fz/b_fm<<endl;
else
cout<<"y="<<"-"<<abs(k_fz)<<"/"<<abs(k_fm)<<"*x"<<endl;
return 0;
}
if(b_fz*1.0/b_fm>0)
cout<<"y="<<"-"<<abs(k_fz)<<"/"<<abs(k_fm)<<"*x"<<"+"<<abs(b_fz)/__gcd(abs(b_fz),abs(b_fm))<<"/"<<abs(b_fm)/__gcd(abs(b_fz),abs(b_fm))<<endl;
else if(b_fz*1.0/b_fm<0)
cout<<"y="<<"-"<<abs(k_fz)<<"/"<<abs(k_fm)<<"*x"<<"-"<<abs(b_fz)/__gcd(abs(b_fz),abs(b_fm))<<"/"<<abs(b_fm)/__gcd(abs(b_fz),abs(b_fm))<<endl;
else
cout<<"y="<<"-"<<abs(k_fz)<<"/"<<abs(k_fm)<<"*x"<<endl;
}
return 0;
}边栏推荐
- About the transmission pipeline of stage in spark
- LeetCode_ 66 (plus one)
- Caijing 365 stock internal reference | the first IPO of Beijing stock exchange; the subsidiary of the recommended securities firm for gambling and gambling, with a 40% discount
- Leecode question brushing record 1332 delete palindrome subsequence
- Pytorch(三) —— 函数优化
- C - detailed explanation of operators and summary of use cases
- VIM easy to use tutorial
- RDF query language SPARQL
- Shell之一键自动部署Redis任意版本
- Kodori tree board
猜你喜欢

Cmake selecting compilers and setting compiler options

Dataloader的使用

解决:拖动xib控件到代码文件中,报错setValue:forUndefinedKey:this class is not key value coding-compliant for the key

Pytorch convolution operation

How to do the performance pressure test of "Health Code"

Registration for R2 mobile pressure vessel filling test in 2022 and R2 mobile pressure vessel filling free test questions

C -- array

【硬十宝典】——1.【基础知识】电源的分类

STM32扩展版 按键扫描

分布式架构系统拆分原则、需求、微服务拆分步骤
随机推荐
神经网络-卷积层
2022 hoisting machinery command registration examination and hoisting machinery command examination registration
缓冲流与转换流
Leecode records the number of good segmentation of 1525 strings
PR 2021 quick start tutorial, learn about the and functions of the timeline panel
STM32 光敏电阻传感器&两路AD采集
LeetCode_66(加一)
手动实现一个简单的栈
STM32 extended key scan
Daily algorithm & interview questions, 28 days of special training in large factories - the 13th day (array)
RDF query language SPARQL
How to do the performance pressure test of "Health Code"
LeetCode_ 53 (maximum subarray and)
Neural network - nonlinear activation
Kodori tree board
LM小型可编程控制器软件(基于CoDeSys)笔记十九:报错does not match the profile of the target
分布式-总结列表
Common interview questions ①
Common UNIX Operation and maintenance commands of shell
LeetCode_ 66 (plus one)