TRICIR - Tam giác vuông trên vòng tròn

Tags: dsu, math

Problem

https://vn.spoj.com/problems/TRICIR

https://oj.vnoi.info/problem/TRICIR

Đề bài

Cho N điểm cách đều nhau trên một vòng tròn được đánh số từ 0 đến N-1 theo chiều kim đồng hồ, trong đó có P điểm được sơn màu đỏ. Hãy đếm số tam giác vuông có 3 đỉnh đều được sơn màu đỏ.

Biết rằng P điểm màu đỏ được tạo thành như sau, cho trước 3 số nguyên a, b, c. Với i = 0, 1, 2, 3, ..., P - 1, thực hiện các bước sau:

  • Tính P[i] = (a*i*i + b*i + c) mod N
  • Bắt đầu từ P[i], tìm điểm đầu tiên theo chiều kim đồng hồ mà chưa được sơn đỏ và sơn đỏ điểm đó

Dữ liệu

  • Mỗi test bắt đầu bằng thẻ [CASE], các test cách nhau bởi một dòng trắng. Thẻ [END] báo hiệu kết thúc file input.
  • Mỗi test gồm 5 dòng chứa các số N, P, a, b, c

Kết quả

  • Với mỗi test in ra số tam giác vuông tìm được.

Giới hạn

  • 1 <= N <= 1 000 000
  • 0 <= P <= 100 000
  • 0 <= a, b, c <= 1 000 000

Ví dụ

Input
[CASE]
9
3
0
3
0

[CASE]
40
3
5
0
0

[CASE]
4
4
16
24
17
    	
[CASE]
1000000
47000
0
2
5

[CASE]
200000
700
123456
789012
345678

[END]


Output
0
1
4
0
6980

Tutorial


Submission

TRICIR.cpp