zoukankan      html  css  js  c++  java
  • codevs 1213 解的个数(我去年打了个表

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    int T,x,y,ans,g,l1,r1,l2,r2;
    int init()
    {
        int x=0;char s=getchar();bool f=0;
        while(s<'0'||s>'9'){if(s=='-')f=1;s=getchar();}
        while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();}
        if(f)return -x;return x;
    }
    void E_gcd(int a,int b)
    {
        if(b==0)
          {
              x=1;y=0;g=a;
          }
        else 
          {
              E_gcd(b,a%b);
              int tmp=x;
              x=y;
              y=tmp-a/b*y;
          }
    }
    int main()
    {
        int a,b,c,i,j;
        T=init();
        while(T--)
          {
              ans=0;
              a=init();b=init();c=init();
              c=-c;
              l1=init();r1=init();l2=init();r2=init();
              if(a==0&&b==0)
                {
                    if(c!=0||l1>r1||l2>r1)
                      {
                          printf("0
    ");
                        continue;
                  }
                long long an,li,ri;
                li=r1-l1+1;ri=r2-l2+1;
                an=li*ri;
                    cout<<an<<endl;
                    continue;
              }
              if(a==0)
                {
                    y=c/b;
                    if(y<l2||y>r2||c%b!=0)
                      printf("0
    ");
                    else 
                      printf("1
    ");
                    continue;
              }
            if(b==0)
                {
                    x=c/a;
                    if(x<l1||x>r1||c%a!=0)
                      printf("0
    ");
                    else 
                      printf("1
    ");
                    continue;
              }
              E_gcd(a,b);
              if(c%g!=0)
                {
                    printf("0
    ");
                    continue;
              }
            int s=c/g;
            x*=s;y*=s;
              int ai=a/g;
            int bi=b/g;
            if(x<l1)
              {
                  while(x<l1)
                  {
                    x+=bi;y-=ai;
                  }
                  for(i=x;i<=r1;i+=bi,y-=ai)
                    if(y>=l2&&y<=r2)
                      ans++;
              }
            else if(x>r1)
              {
                  while(x>r1)
                  {
                    x-=bi;y+=ai;
                  }
                  for(i=x;i>=l1;i-=bi,y+=ai)
                    if(y>=l2&&y<=r2)
                      ans++;
              }
            else 
              {
                  int yi=y;
                  for(i=x;i<=r1;i+=bi,yi-=ai)
                    if(yi>=l2&&yi<=r2)
                      ans++;
                yi=y+ai;
                for(i=x-bi;i>=l1;i-=bi,yi+=ai)
                    if(yi>=l2&&yi<=r2)
                      ans++;
              }
              printf("%d
    ",ans);
          }
        return 0;
    }
  • 相关阅读:
    设计模式之桥接模式
    设计模式之适配器模式
    设计模式之建造者模式
    设计模式之原型设计
    Exception in thread "main" java.lang.UnsupportedOperationException
    设计模式7大原则
    设计模式之单例模式
    初识python
    消息传递:发布订阅模式详解
    哨兵机制(Redis Sentinel)
  • 原文地址:https://www.cnblogs.com/yanlifneg/p/5532019.html
Copyright © 2011-2022 走看看