zoukankan      html  css  js  c++  java
  • 【题解】解的个数

    题目描述

    已知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;
        }
    } 
    
    
  • 相关阅读:
    01-数字转人民币读法
    词组缩写
    字符串区间比较
    字符串读入
    回文数判断
    字符串加密
    字母统计
    互质的数
    【Tools】Anaconda Operaction
    【mmwave】DeviceSurvey
  • 原文地址:https://www.cnblogs.com/2021-yanghaoran/p/10623235.html
Copyright © 2011-2022 走看看