本文主要是介绍SGU106 The equation,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"><span style="font-size:14px;">题意:给出直线ax+by+c=0的参数a, b, c,求直线在 x ∈[x1, x2],y ∈[y1, y2] 上有多少整点。</span></span>
题解:首先特判a或b等于零的情况。若a,b非零,欧几里得搞出一组解,然后算出delta_x, delta_y(通解式子),按直线的斜率>0或<0分类。然后求出x的最小合法取值(即对应的y也合法),然后在x的可滑动区间和y的可滑动区间之间求一个最小值就好了。
写这题的时候开始代码还能看,后来一次又一次地被细节坑,然后为了AC代码就越来越乱了。。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define LL long long
#define f1(y) ((c-b*(y)) / a) //已知y对应的x
#define f2(x) ((c-a*(x)) / b) //已知x对应的y
这篇关于SGU106 The equation的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!