解的个数(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 ...
随机推荐
- centos下安装nginx
1.yum install nginx 安装nginx 2.service nginx start 启动nginx 3.然后进入浏览器,输入http://Ip/测试,如果看到 Welcome ...
- http://debugjs.com/
浏览器内调试js代码,这篇文章介绍了作者的开发心路 http://amasad.me/2014/01/06/building-an-in-browser-javascript-vm-and-debug ...
- windowSoftInputMode属性讲解
windowSoftInputMode属性讲解(下面这段内容我参考别人的博客,并加入我的一些意见) 我们从这个属性的名称中,可以很直观的看出它的作用,这个属性就是来设置窗口软键盘的交互模式的.andr ...
- session会话复制
前几天请教了Yoda大神关于会话复制方面的问题, 如果客户访问是两个服务器的东西,这样会有两个分别的session, 这两个session之间怎么交互,集群环境下,同构的服务器,专业术语 ...
- Raspberry Pi 配置笔记二
配置源 http://blog.chinaunix.net/uid-21658993-id-4702322.html deb http://ipv4.mirrors.ustc.edu.cn/raspb ...
- javascript最容易混淆的作用域、提升、闭包
一.函数作用域 1.函数作用域 就是作用域在一个“Function”里,属于这个函数的全部变量都可以在整个函数的范围内使用及复用. function foo(a) { var b = 2; funct ...
- C#基础语法实例荟萃
匿名类 action = new UploadHandler(context, new UploadConfig() { AllowExtensions = Config.GetStringList( ...
- 【leetcode】Text Justification
Text Justification Given an array of words and a length L, format the text such that each line has e ...
- mysql中表名是order的CRUD的错误
org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: com.mysql.jdbc. ...
- 【python】python新手必碰到的问题---encode与decode,中文乱码[转]
转自:http://blog.csdn.net/a921800467b/article/details/8579510 为什么会报错“UnicodeEncodeError:'ascii' codec ...