zoukankan      html  css  js  c++  java
  • LightOJ 1366

    题意:http://www.lightoj.com/volume_showproblem.php?problem=1366

    利用圆心距,将各个圆心半径都模拟出来,然后找到最小矩形  最后求出总数

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<iostream>
    #include<queue>
    #include<map>
    #include<vector>
    #include<math.h>
    #include<string>
    using namespace std;
    #define INF 0x3f3f3f3f
    #define LL long long
    #define N 1000009
    #define Lson rood<<1
    #define Rson rood<<1|1
    #define PI acos(-1)
    int main()
    {
        int T,t=1;
        scanf("%d",&T);
        while(T--)
        {
            int H,W;///求出不同圆心距时 两圆所占的最小矩形
            scanf("%d%d",&H,&W);
            LL sum=0;
            for(int i=0;i<=H/2;i++)///模拟两圆圆心 一圆心为(0,0),另一个为(i,j)
            {
                for(int j=0;j<=W/2;j++)
                {
                    int d=(int)sqrt(i*i+j*j);
                    if(d*d!=i*i+j*j) continue;///全为整数  圆心距也是整数
                    for(int r=1;r<d;r++)
                    {
                        LL ans=0;///根据半径大小 求出两圆所在的最小矩形
                        int x=max(r,i+d-r)-min(-r,i-d+r);
                        int y=max(r,j+d-r)-min(-r,j-d+r);
                        if(x>H||y>W) continue;
                        ans=(H-x+1)*(W-y+1);
                        if(i*j) ans*=2;///存在(3,4)的情况 分别为向上和向下  所以要乘2
                        sum+=ans;
                    }
                }
            }
            printf("Case %d: %lld
    ",t++,sum);
        }
        return 0;
    }
  • 相关阅读:
    View(视图)
    计算器 ——给按钮添加监听器
    Activity(活动)
    UI组件
    计算器界面——GridLayout
    信息界面——GridLayout
    Android计算器界面 TableLayout
    javaji基础x2
    java的开始
    数据类型
  • 原文地址:https://www.cnblogs.com/a719525932/p/7815821.html
Copyright © 2011-2022 走看看