解的个数(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 ...
随机推荐
- JavaScript与DOM
文档对象模型Document Object Model DOM(Document Object Model,文档对象模型)是一个通过和JavaScript进行内容交互的API.Javascript和D ...
- 01Getting Started---Getting Started with ASP.NET Web API 2入门WebApi2
HTTP 不只是为了生成 web 页面.它也是建立公开服务和数据的 Api 的强大平台.HTTP 是简单的. 灵活的和无处不在.你能想到的几乎任何平台有 HTTP 库,因此,HTTP 服务可以达到范围 ...
- python 内置函数 : compile()
这个函数用来编译一段字符串的源码,结果可以生成字节码或者AST(抽像语法树),字节码可以使用函数exec()来执行,而AST可以使用eval()来继续编译. 参数source是一串字符串的源码,或者是 ...
- BZOJ1367——[Baltic2004]sequence
1.题目大意:给一个序列t,然后求一个序列z,使得$|z1-t1|+|z2-t2|+...+|zn-tn|$的值最小,我们只需要求出这个值就可以了,并且z序列是递增的 2.分析:这道题z序列是递增的, ...
- BZOJ3172——[Tjoi2013]单词
1. 题目大意:一篇论文是由许多单词组成,现在想知道每个单词分别在论文中出现多少次. 2.分析:对着 广义后缀自动机的图看,我们就会发现玄机,答案不就是这个单词下的后缀个数吗? 于是建立自动机,然后求 ...
- [BZOJ3991][SDOI2015]寻宝游戏
[BZOJ3991][SDOI2015]寻宝游戏 试题描述 小B最近正在玩一个寻宝游戏,这个游戏的地图中有N个村庄和N-1条道路,并且任何两个村庄之间有且仅有一条路径可达.游戏开始时,玩家可以任意选择 ...
- hdu 5492
动态规划 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm&g ...
- 将 JAR 转为 EXE – JSMOOTH 的使用教程(第二期)(转载)
http://www.iteknical.com/convert-jar-to-exe-phase-ii-jsmooth-use-tutorial/
- 9. JEB 1.5插件编写一
2.0之后好像新增加了很多API,有所区别 本文采用Java+Eclipse作为开发环境 插件支持的语言 文档: jeb-1.5/doc/index.html 一.Hello World工程 1. ...
- sharepoint的导航开发
2.来大体讲一下“导航” (1)全局导航 : 整个网站集的导航:(如果公司的网站有很多子网站,这时便会用到全局导航啦):贴一下主要代码: using Microsoft.SharePoint.Publ ...