比赛 20110923 评测结果 AAAAATTTTT
题目名称 横幅 最终得分 50
用户昵称 苏轼 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-09-23 21:55:13
显示代码纯文本
#include <cstdio>
#include <cstdlib>

using namespace std;

bool huzhi (int a, int b)
{
    while (b)
    {
        int t = b;
        b = a%b;
        a = t;
    }
    return a==1;
}

int main ()
{
    freopen("banner.in", "r", stdin);
    freopen("banner.out", "w", stdout);

    long long W, H, L1, L2;
    scanf("%lld%lld%lld%lld", &W, &H, &L1, &L2);

    long long ans = 0;
    for (int i=0; i<=W; i++)
        for (int j=0; j<=H; j++)
        {
            if (L1 == 1)
            {
                if (i-1 >= 0)
                    ans++;
                if (j-1 >= 0)
                    ans++;
                if (i < W)
                    ans++;
                if (j < H)
                    ans++;
            }

            for (int ii=1; ii<L2; ii++)
                for (int jj=1; jj<L2; jj++)
                    if (huzhi(ii, jj))
                    {
                        long long tmp = ii*ii + jj*jj;

                        if (tmp < L1*L1)
                            continue;
                        if (tmp > L2*L2)
                            break;

                        if (i-ii >= 0)
                        {
                            if (j-jj >= 0)
                                ans++;
                            if (j+jj <= H)
                                ans++;
                        }
                        if (i+ii <= W)
                        {
                            if (j-jj >= 0)
                                ans++;
                            if (j+jj <= H)
                                ans++;
                        }

                    }
        }

    printf("%lld\n", ans/2);

    return 0;
}