밀밭 삼각형 (작은 입력)
시간 제한5초메모리 제한512 MB
생성된 나무 점 세 개의 좌표 합이 두 축에서 모두 3으로 나누어지는 경우의 수를 센다.
문제
장난꾸러기 몇 명이 밤새 밀밭에 커다란 삼각형을 눕혀 놓으려고 한다. 위에서 내려다본 밀밭은 간격이 일정한 격자이고, 두 격자선이 만나는 격자점 가운데 몇 곳에는 나무가 서 있다. 이들은 삼각형의 세 꼭짓점을 모두 나무 위에 두려고 한다. 삼각형의 중심도 격자점에 놓이기를 바란다.
세 꼭짓점이 , , 인 삼각형의 중심은 이다.
밀밭에 있는 모든 나무의 정수 좌표가 주어진다. 서로 다른 나무 세 개를 꼭짓점으로 하고 중심의 좌표가 모두 정수인 삼각형이 몇 개인지 세어라. 면적이 0인 삼각형도 유효한 삼각형으로 센다.
입력
첫째 줄에 테스트 케이스의 개수 이 주어진다. 이어지는 개의 줄에는 각각 정수 , , , , , , , 이 공백 하나로 구분되어 주어진다. 은 나무의 개수다.
나무의 좌표는 이 여덟 개의 수로 아래 의사 코드가 출력하는 값이다. mod는 나머지 연산이다. 첫 번째 나무는 과 을 나머지 연산 없이 그대로 쓰므로 보다 클 수 있다.
X = x0, Y = y0
print X, Y
for i = 1 to n-1
X = (A * X + B) mod M
Y = (C * Y + D) mod M
print X, Y
같은 자리에 나무가 두 개 놓이지 않도록 매개변수가 정해진다.
제한:
출력
각 테스트 케이스마다 한 줄에 Case #X: Y 형식으로 출력한다. 는 1부터 시작하는 테스트 케이스 번호이고, 는 서로 다른 나무 세 개를 꼭짓점으로 하며 중심이 격자점인 삼각형의 개수다.
힌트
첫 번째 예제의 첫 테스트 케이스에서 여덟 개의 수가 만드는 나무 네 개는 , , , 이다.