Luogu P2833 等式 我是傻子x2
又因为调一道水题而浪费时间。。。不过细节太多了$qwq$,暴露出自己代码能力的不足$QAQ$
设$d=gcd(a,b)$,这题不是显然先解出来特解,即解出
$\frac{a}{d}x_0+\frac{b}{d}y_0=d$,中的$x_0,y_0$
然后根据
$x=\frac{c}{d}x_0+k\frac{b}{d},y=\frac{c}{d}x_0-k\frac{a}{d},k \in Z$
来卡范围吗$qwq$
然后自己就兴致勃勃的调了一晚上,老是差一点。。。后来发现一个大细节,就是左右端点,左端点要向上取整,右端点要向下取整$qwq$,发现后又调了半天$qwq$
对了还有一堆特判。。。主要是判各种$0$的,什么$a=0,b=0,c=0$之类的。。。详见代码
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cctype>
#include<cstdlib>
#include<vector>
#include<queue>
#include<map>
#include<set>
#define ll long long
#define int ll
#define R register ll
using namespace std;
namespace Fread {
static char B[<<],*S=B,*D=B;
#define getchar() (S==D&&(D=(S=B)+fread(B,1,1<<15,stdin),S==D)?EOF:*S++)
inline int g() {
R ret=,fix=; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-:fix;
do ret=ret*+(ch^); while(isdigit(ch=getchar())); return ret*fix;
}
}using Fread::g;
inline void exgcd(ll a,ll b,ll& x,ll& y) {if(!b) {x=,y=; return ;} exgcd(b,a%b,y,x); y-=a/b*x;}
inline ll gcd(ll a,ll b) {return b?gcd(b,a%b):a;}
int a,b,c,x1,x2,Y1,Y2;
signed main() {
#ifdef JACK
freopen("NOIPAK++.in","r",stdin);
#endif
a=g(),b=g(),c=-g(),x1=g(),x2=g(),Y1=g(),Y2=g(); R d=gcd(a,b);
if(a==&&b==) {
if(c!=) {printf("0\n"); return ;}
else if(c==) {R k=(ll)(x2-x1+)*(Y2-Y1+); printf("%lld\n",k); return ;}
} if(c%d!=) {printf("0\n"); return ;}
R x,y; exgcd(a,b,x,y);
if(a==||b==) {
if(a==) { Y1>Y2?swap(Y1,Y2):void(); y=y*c/d;
if(y>=Y1&&y<=Y2) printf("%lld\n",x2-x1+);
else printf("0\n");
} else if(b==) { x1>x2?swap(x1,x2):void(); x=x*c/d;
if(x>=x1&&x<=x2) printf("%lld\n",Y2-Y1+);
else printf("0\n");
} return ;
}
x1-=x*c/d,x2-=x*c/d,Y1-=y*c/d,Y2-=y*c/d;
if(!(x1<x2)^(b>=)^(d>=)) swap(x1,x2); if((Y1<Y2)^(a>=)^(d>=)) swap(Y1,Y2);
R k1=(x1+b-)/b*d,k2=(x2-b+)/b*d,k3=(-Y1*d+a-)/a,k4=(-Y2*d-a+)/a;
k1=(ll)ceil((long double)x1*d/b),k2=(ll)floor((long double)x2*d/b),k3=(ll)ceil((long double)-Y1*d/a),k4=(ll)floor((long double)-Y2*d/a);
if(k1>k2) swap(k1,k2); if(k3>k4) swap(k3,k4);
R kn=max(k1,k3),kx=min(k2,k4); if(kx-kn<) printf("0\n");else printf("%lld\n",kx-kn+);
}
2019.06.09
Luogu P2833 等式 我是傻子x2的更多相关文章
- IT培训行业揭秘(四)
IT培训班的老师前面已经说过,很多都是从一线程序员岗位转过来的,因为培训行业的收入整体上来看还是比作普通程序员要高一些,这是市场的普遍行情.还有一部分老师从培训班学习过并且留到培训班任教的.一般这种老 ...
- 越狱Season 1-Episode 11: And Then There Were 7-M
Season 1, Episode 11: And Then There Were 7-M -Michael: That one 那个 -businessman: Nice choice choice ...
- Math - Uva 11300 Spreading the Wealth
Spreading the Wealth Problem's Link ---------------------------------------------------------------- ...
- HDU 6373.Pinball -简单的计算几何+物理受力分析 (2018 Multi-University Training Contest 6 1012)
6373.Pinball 物理受力分析题目. 画的有点丑,通过受力分析,先求出θ角,为arctan(b/a),就是atan(b/a),然后将重力加速度分解为垂直斜面的和平行斜面的,垂直斜面的记为a1, ...
- 江西财经大学第一届程序设计竞赛 A
链接:https://www.nowcoder.com/acm/contest/115/A来源:牛客网 题目描述 "挤需体验五番钟,里造会挨上这款游戏!" 怎么可能嘛!当我是傻子吗 ...
- 计蒜客 28449.算个欧拉函数给大家助助兴-大数的因子个数 (HDU5649.DZY Loves Sorting) ( ACM训练联盟周赛 G)
ACM训练联盟周赛 这一场有几个数据结构的题,但是自己太菜,不会树套树,带插入的区间第K小-替罪羊套函数式线段树, 先立个flag,BZOJ3065: 带插入区间K小值 计蒜客 Zeratul与Xor ...
- python复数
复数的概念在很久以前,数学家们被下面的等式困扰.x2=-1这是因为任何实数(无论正负)乘以自己总会得到一个非负数.一个数怎么可以乘以自己得到一负数?没有这样的实数存在.就这样18世纪,数学家们发了一个 ...
- [考试反思]1029csp-s模拟测试92:弱智
我只能这么评价我自己. 看这个提交时间...我没话可说... T1半个世界都A了还是切不掉.又一次挂细节. T2不会证明的乱搞(虽然可以证明)A了没什么可说的算是水过. T3之前水过的题(打的次正解) ...
- 机器学习-线性规划(LP)
线性规划问题 首先引入如下的问题: 假设食物的各种营养成分.价格如下表: Food Energy(能量) Protein(蛋白质) Calcium(钙) Price Oatmeal(燕麦) 110 4 ...
随机推荐
- 搞事情 -- python之线程
简介 操作系统线程理论 线程概念的引入背景 线程的特点 进程和线程的关系 使用线程的实际场景 用户级线程和内核级线程(了解) 线程和python 理论知识 线程的创建Threading.Thread类 ...
- 11g 如何添加,替换,移除,迁移 OCR ?
一: 增加 裸设备上,创建至少280MB的裸设备,权限是640,属主是root:oinstall共享文件系统 Or NFS,创建空文件,权限是640,属主是root:oinstall root用户执行 ...
- Operating System-Process(2)进程表&&中断处理
上一篇文章阐述了进程的基本信息,本文主要介绍进程的实现,主要内容: 进程表(Process Table or Process Control Blocks) 中断处理(Interrupt) 一.进程表 ...
- BZOJ4009:[HNOI2015]接水果
浅谈树状数组与线段树:https://www.cnblogs.com/AKMer/p/9946944.html 题目传送门:https://www.lydsy.com/JudgeOnline/prob ...
- git常见使用情境整理
一.版本回退 回退到某个commit版本的方法如下: 1. 查看commit历史 git log 找到想要回退的版本的号码,eg:f765889 2. 回退到该版本 git reset f765889 ...
- Poj1012_Joseph
一.Description The Joseph's problem is notoriously known. For those who are not familiar with the ori ...
- redis多机集群部署文档
redis多机集群部署文档(centos6.2) (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下 ...
- Java 编程规范,常见规范,命名规范,复杂度
方法/步骤 1. *不允许把多个短语句写在一行中,即一行只写一条语句 1. 示例:如下例子不符合规范. LogFilename now = null; LogFilename t ...
- 各种浏览器下的user-agent
ie11Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko safariMozilla/5.0 (Macintos ...
- js链表操作
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...