2 条题解

  • 0
    @ 2025-10-8 16:57:57
    #include <bits/stdc++.h>
    using namespace std;
    int n, m, l, r;
    long long ans;
    int gcd(int a, int b) {
        return a % b == 0 ? b : gcd(b, a % b);
    }
    int main(void) {
        scanf("%d%d%d%d", &n, &m, &l, &r); 
        for(int i=1; i<=n; i++)
            for(int j=1; j<=m; j++)
                if(gcd(i, j) == 1 && i*i + j*j >= l*l && i*i + j*j <= r*r)
                    ans += 2 * (n - i + 1) * (m - j + 1);
        if(l == 1) ans += n * (m + 1) + (n + 1) * m;
        printf("%lld\n", ans);
        return 0;
    }
    
    • 0
      @ 2025-10-8 16:57:51
      #include<bits/stdc++.h>
      using namespace std;
      int n,m,l,r;
      long long ans;
      int gcd(int a,int b) {
          return a%b==0?b:gcd(b,a% b);
      }
      int main(void) {
          scanf("%d%d%d%d",&n,&m,&l,&r); 
          for(int i=1;i<=n;i++)
              for(int j=1;j<=m;j++)
                  if(gcd(i,j)==1&&i*i+j*j>=l*l&&i*i+j*j<=r*r)
                      ans+=2*(n-i+1)*(m-j+1);
          if(l==1) ans+=n*(m+1)+(n+1)*m;
          printf("%lld\n",ans);
          return 0;
      }
      • 1

      *【组合数:综合计算】平面两点之间不经过整数点的方案数[USACO10NOV] Banner S

      信息

      ID
      1578
      时间
      1000ms
      内存
      128MiB
      难度
      7
      标签
      递交数
      53
      已通过
      14
      上传者