题解解的个数
Posted X_OR
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题解解的个数相关的知识,希望对你有一定的参考价值。
题目描述
已知x,y满足如下条件:ax+by+c=0;x1≤x≤x2;y1≤y≤y2;x,y均为整数。其中:a,b,c,x1,x2,y1,y2都是绝对值不超过106106的整数。求(x,y)的解的个数。
输入输出格式
输入格式:
第一行,一个数n,表示有n个任务,n≤10。
以下有n行,每行为:a,b,c,x1,x2,y1,y2。
输出格式:
有n行,第i行是第i个任务的结果,如果无解则输出0。
输入输出样例
输入样例:
2 2 3 -7 0 10 0 10 1 1 1 -10 10 -9 9
输出样例:
1 19
这道题硬算枚举x,y是肯定会超时的啦,所以我们可以试着只枚举x,计算出y,再看看计算出的y在不在y1到y2这个范围内
具体程序如下:
#include<cstdio> #include<iostream> using namespace std; long long n,a,b,c,x1,x2,y1,y2,intemp; long long sum; int main() { cin>>n; for(register int i=1;i<=n;++i) { sum=0; cin>>a>>b>>c>>x1>>x2>>y1>>y2; if(a==0&&b==0&&c==0) { sum=x2-x1+1; cout<<sum*(y2-y1+1)<<endl; continue; } for(register int j=x1;j<=x2;++j) { if(b==0) { if(-c-a*j==0) sum+=y2-y1+1; } else { intemp=(-c-a*j)/b; if(a*j+b*intemp+c==0&&(intemp>=y1&&intemp<=y2)) ++sum; } } cout<<sum<<endl; } }
以上是关于题解解的个数的主要内容,如果未能解决你的问题,请参考以下文章