hdu2973

maksyuki 发表于 oj 分类,标签:
0

YAPTCHA

Problem Description

The math department has been having problems lately. Due to immense amount of unsolicited automated programs which were crawling across their pages, they decided to put Yet-Another-Public-Turing-Test-to-Tell-Computers-and-Humans-Apart on their webpages. In short, to get access to their scientific papers, one have to prove yourself eligible and worthy, i.e. solve a mathematic riddle.

However, the test turned out difficult for some math PhD students and even for some professors. Therefore, the math department wants to write a helper program which solves this task (it is not irrational, as they are going to make money on selling the program).

The task that is presented to anyone visiting the start page of the math department is as follows: given a natural n, compute
where [x] denotes the largest integer not greater than x.

Input

The first line contains the number of queries t (t <= 10^6). Each query consist of one natural number n (1 <= n <= 10^6).

Output

For each n given in the input output the value of Sn.

Sample Input

13

1

2

3

4

5

6

7

8

9

10

100

1000

10000

Sample Output

0

1

1

2

2

2

2

3

3

4

28

207

1609

Source

Central European Programming Contest 2008

 

题目类型:Wilson定理

算法分析:令p = 3k+7,则和式的一般项可以化简成((p - 1)! + 1) / p - [(p - 1)! / p],若p是合数,则由于k >= 1,即p >= 10,可以保证 p | (p - 1)! 设(p - 1)! = kp,则一般项化简为k + 1 / p - k = 1 / p = 0。若p是素数,则p | ((p - 1)! + 1),此时设(p - 1)! + 1 = kp,则一般项化简为k - [(kp - 1) / p] = k - [k - 1 / p]。由于1 / p < 1,则[k - 1 / p] = k - 1,则原式为k - (k - 1) = 1。总结一下就是若p是合数,则Ak = 1,若p是素数,则Ak = 0。最后求解的是Sigma Ak, k = 1~n