题解:P1945 无边的网格

· · 题解

题解区都没有不存在格点正三角形的证明,这里给一下

假设

存在一个格点正三角形 \triangle ABC ,其边长为 a \in \mathbb{R}^+

正三角形的面积为:

\text{Area} = \frac{\sqrt{3}}{4} a^2

对于格点多边形,Pick 定理给出:

\text{Area} = I + \frac{B}{2} - 1

其中:

结论:在标准整数格点平面中,不存在非退化的格点正三角形。)

格点正方形的思路题解区已经有了就不放了

形式化的放下代码,使用了 JavaBigint 类偷懒:

import java.io.*;
import java.math.BigInteger;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        String[] input = br.readLine().split(" ");
        BigInteger n = new BigInteger(input[0]);
        BigInteger m = new BigInteger(input[1]);

        if (n.compareTo(m) > 0) {
            BigInteger temp = n;
            n = m;
            m = temp;
        }

        BigInteger c1 = n.add(BigInteger.ONE);
        BigInteger c2 = n.add(BigInteger.TWO);
        BigInteger numerator = n.multiply(c1).multiply(c2).multiply(m.multiply(BigInteger.TWO).add(BigInteger.ONE).subtract(n));
        BigInteger ans = numerator.divide(BigInteger.valueOf(12));

        bw.write(ans + " 0");
        bw.close();
    }
}