Problem A. Square Counting
Description
Mr. Panda has just been given a grid with R rows and C columns of dots. How many different squares can he find in this grid? Since the number might be very large, please output the answer modulo 109 + 7 (1000000007).
Algorithm
比賽開始時取了個外賣,然後推公式推了很久。對於十二三分鐘就做出來這題的人我只能表示佩服。
首先計算 R == C 的情況。
- 邊長爲1的小正方形有 (C-1) * (C-1) 個,每一個的內部邊上的斜正方形有 0 個;
- 邊長爲2的小正方形有(C-2) * (C-2)個,每一個的內部邊上的斜正方形有 1 個;
- …
- 邊長爲(C-1)的小正方形有 1 * 1 個,每一個的內部邊上的斜正方形有 (C-2) 個.
即
整理之後用平方和公式和立方和公式可以得到
然後不妨假設 R > C, 則對於多出來的每一行,需要加上的正方形有:
- 邊長爲1的:(C-1) 個,每一個裏面斜的正方形有 0 個,
- 邊長爲2的: (C-2) 個,每一個裏面斜的正方形有 1 個,
- …
- 邊長爲 (C-1) 的: 1 個,每一個裏面斜的正方形有 (C-2) 個.
即需要加上
整理一下,然後乘以 (R-C) 之後加到
答案需要模
最後
我太弱了,3 hour 只做出來這一題的small數據。
第二題正則匹配沒寫好。
其他題再說吧。