【luoguP2997】[USACO10NOV]旗帜Banner

时间:2019-10-21 13:15:18   收藏:0   阅读:77

题目链接

长和宽的gcd(x,y)=1,就没有中间结点,一种线段有两种方向,暴力统计一下就好了

注意x=0或y=0时的线段只有一种方向

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#define int long long
using namespace std;

int L1,L2,W,H,ans;

inline int gcd(int a,int b){
    if(!b) return a;
    return gcd(b,a%b);
}

signed main()
{
    scanf("%lld%lld%lld%lld",&W,&H,&L1,&L2);
    for(int i=0;i<=W;++i)
        for(int j=0;j<=H;++j){
            double len=sqrt(i*i+j*j);
            if(gcd(i,j)==1&&L1<=len&&len<=L2){
                if(i==0||j==0) ans+=(W-i+1)*(H-j+1);
                else ans+=(W-i+1)*(H-j+1)*2;
            }
        }
    printf("%lld\n",ans);
    return 0;
}

原文:https://www.cnblogs.com/yjkhhh/p/11712652.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!