解的个数(codevs 1213)
已知整数x,y满足如下面的条件:
ax+by+c = 0
p<=x<=q
r<=y<=s
求满足这些条件的x,y的个数。
第一行有一个整数n(n<=10),表示有n个任务。n<=10
以下有n行,每行有7个整数,分别为:a,b,c,p,q,r,s。均不超过108。
共n行,第i行是第i个任务的解的个数。
2
2 3 -7 0 10 0 10
1 1 1 -10 10 -9 9
1
19
/*
扩展欧几里得
再复习一遍有关公式:
推导过程: a*x1+b*y1=gcd(a,b)
b*x2+(a%b)*y2=gcd(a,b) => b*x2+(a-b*(a/b))*y2=gcd(a,b) => a*y2+b*(x2-(a/b)*y2)=gcd(a,b)
可得:x1=y2,y1=x2-(a/b)*y2
转变成需要的x和y:x=x*c/gcd(a,b),y=y*c/gcd(a,b)
(注意:当 c%gcd(a,b)!=0 时,无解)
转变成一般的x和y:x=x+t*(b/gcd),y=y+t*(a/gcd) 快WA成SB了
要特判的情况太多了 (a=0&&b=0,a=0,b=0)
*/
#include<cstdio>
#include<iostream>
using namespace std;
int exgcd(int a,int b,double &x,double &y){
if(!b){
x=;y=;
return a;
}
int r=exgcd(b,a%b,x,y);
int t=x;x=y;y=t-a/b*y;
return r;
}
int Down(double x){
if(x>=) return (int)x;
return (int)(x-0.999999);
}
int Up(double x){
if(x>=) return (int)(x+0.999999);
return (int)x;
}
void work(){
int a,b;double c,p,q,r,s;
scanf("%d%d%lf%lf%lf%lf%lf",&a,&b,&c,&p,&q,&r,&s);
if(p>q||r>s){
printf("0\n");return;
}
if(a==&&b==){
if(c!=)printf("0\n");
else{
long long ans,li,ri;
li=(long long)(q-p+);ri=(long long)(s-r+);
ans=li*ri;
cout<<ans<<endl;
}
return;
}
if(a==){
if((int)(-c)%b==&&(-c/(double)b)>=r&&(-c/(double)b)<=s)printf("1\n");
else printf("0\n");
return;
}
if(b==){
if((int)(-c)%a==&&(-c/(double)a)>=p&&(-c/(double)a)<=q)printf("1\n");
else printf("0\n");
return;
}
double x,y;int vgcd=exgcd(a,b,x,y);
if((int)(-c)%vgcd!=){
printf("0\n");return;
}
x=x*(-c)/(double)vgcd;y=y*(-c)/(double)vgcd;
double tx1=(p-x)*(double)vgcd/b,tx2=(q-x)*(double)vgcd/b;
double ty1=(y-s)*(double)vgcd/a,ty2=(y-r)*(double)vgcd/a;
if(tx1>tx2)swap(tx1,tx2);if(ty1>ty2)swap(ty1,ty2);
int x1=Up(tx1),x2=Down(tx2),y1=Up(ty1),y2=Down(ty2);
if(min(x2,y2)-max(x1,y1)+>)printf("%d\n",min(x2,y2)-max(x1,y1)+);
else printf("0\n");
}
int main(){
int T;scanf("%d",&T);
while(T--)work();
return ;
}
解的个数(codevs 1213)的更多相关文章
- 扩展gcd codevs 1213 解的个数
codevs 1213 解的个数 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 已知整数x,y满足如下面的条件: ax+by ...
- codevs 1213 解的个数
1213 解的个数 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 已知整数x,y满足如下面的条件: ax+by+c = ...
- Codevs 1213 解的个数(exgcd)
1213 解的个数 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 已知整数x,y满足如下面的条件: ax+by+c=0 p< ...
- n元线性方程非负整数解的个数问题
设方程x1+x2+x3+...+xn = m(m是常数) 这个方程的非负整数解的个数有(m+n-1)!/((n-1)!m!),也就是C(n+m-1,m). 具体解释就是m个1和n-1个0做重集的全排列 ...
- codevs1213 解的个数
题目描述 Description 已知整数x,y满足如下面的条件: ax+by+c = 0 p<=x<=q r<=y<=s 求满足这些条件的x,y的个数. 输入描述 Input ...
- P1098 方程解的个数
题目描述 给出一个正整数N,请你求出x+y+z=N这个方程的正整数解的组数(1<=x<=y<=z<1000).其中,1<=x<=y<=z<=N . 输入 ...
- codevs 1213 解的个数(我去年打了个表 - -)
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int T,x ...
- HDU1573 线性同余方程(解的个数)
X问题 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- 解方程(codevs 3732)
题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入输出格式 输入格式: 输入文件名为equation .i ...
随机推荐
- 【C语言入门教程】7.1 结构体类型变量的定义和引用
前面学习了变量和数组这些简单的数据结构,它们的特点是必须使用规定的数据类型.例如数组被定义为整型后,它的所有存储单元都是由整型构成.现实生活中某一类事物的共同属性可能是由不同的数据类型组成的集合,或者 ...
- DAY2 Python 标准库 -> Getpass 模块 -> 命令行下输入密码的方法.
getpass 模块 getpass 模块提供了平台无关的在命令行下输入密码的方法. getpass(prompt) 会显示提示字符串, 关闭键盘的屏幕反馈, 然后读取密码. 如果提示参数省略, 那么 ...
- HDU 5120 A Curious Matt(2014北京赛区现场赛A题 简单模拟)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5112 解题报告:扫一遍 #include<cstdio> #include<cstr ...
- iOS开发——UI进阶篇(十七)CALayer,核心动画基本使用
一.CALayer简介 1.CALayer在iOS中,文本输入框.一个图标等等,这些都是UIView你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个其实UIView之所以 ...
- 剑指Offer 找出字符串中第一个只出现一次的字符
题目描述 找出字符串中第一个只出现一次的字符 如果无此字符 请输出'.' 输入描述: 输入一串字符,由小写字母组成 输出描述: 输出一个字符 输入例子: asdfasdfo 输出例子: o 思路:数组 ...
- (原创)Activity启动模式之singleTask
android中activity有四种启动模式 standard(默认):在同一个任务栈中可以有重复的activity,基本没什么限制 singleTop:只有当此activity在栈顶时,去创建它, ...
- bug-android之INSTALL_FAILED_NO_MATCHING_ABIS
bug描述: 经常在网络上下载一些实例,自己研究 ,运行时不时会出现这个bug: Installation error: INSTALL_FAILED_NO_MATCHING_ABIS bug解决方案 ...
- Vijos 1055 奶牛浴场
Description 求一个不覆盖指定点的最大子矩阵,\(n,m \leqslant 3\times 10^5,S \leqslant 5\times 10^3\) . Sol 没有名字的算法都叫x ...
- 初识Flask
首先在学习flask的前提,我是使用了很久的django和tornado,现在在写总结也是本着工作后方便使用flask 少点东西,对flask的介绍和优点总结 1.安装 pip install fla ...
- Mysql5.7版本编译安装及配置
配置yum安装方式 1.配置本地yum源 vim /etc/yum.repos.d/rhel-source.repo [rhel-source] name=Red Hat Enterprise Lin ...