【题解】解的个数

题目描述

已知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;
    }
} 

 


posted @ 2019-03-29 18:46  X_OR  阅读(257)  评论(0编辑  收藏  举报