YAPTCHA

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 875    Accepted Submission(s): 458

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

威尔逊定理:当( p -1 )! ≡ -1 ( mod p ) 时,p为素数。

证明如下

充分性:

当p不是素数,那么令p=a*b ,其中1 < a < p-1 ,1 < b < p-1.

(1)若a≠b,

因为(p-1)!=1*2*...*a*...*b*...*p-1,

所以(p-1)!≡ 0 (mod a)

(p-1)!≡ 0 (mod b)

可得(p-1)!≡ 0 (mod a*b) ,

即 (p-1)!≡ 0 (mod p)

与( p -1 )! ≡ -1 ( mod p )  矛盾

(2)若a=b

因为(p-1)!=1*2*...*a*...*2a*...*p-1.

所以(p-1)!≡ 0 (mod a)

(p-1)!≡ 0 (mod 2a)

可得(p-1)!≡ 0 (mod a*2a) => (p-1)!≡ 0 (mod a*a) ,

即 (p-1)!≡ 0 (mod p)

与( p -1 )! ≡ -1 ( mod p )  矛盾

因此p只能是素数。

必要性:

当p为2,( p -1 )! ≡ -1 ( mod p ) 显然成立

当p为3,( p -1 )! ≡ -1 ( mod p ) 显然成立

对于p>=5,令M={2,3,4,...,p-2}.

对于a∈M,令N={a,2*a,3*a,4*a,....(p-2)*a,(p-1)*a}

令1 <= t1 <= p-1 ,1 <= t2 <= p-1,t1 ≠ t2

那么t1*a∈N,t2*a∈N。

若t1*a≡t2*a (mod p) ,那么|t1-t2|*a ≡ 0 (mod p)。

因为|t1-t2|*a∈N,与N中元素不能被p除尽矛盾。

所以t1*a≡t2*a不成立。

那么N中元素对p取模后形成的集合为{1,2,3,4,...,p-1}.

设x*a ≡ 1 (mod p)。

当x=1时, x*a=a, 对p取模不为1,所以不成立。

当x=p-1时,(p-1)*a=p*a-a, 对p取模不为1,所以不成立。

当x=a时,a*a≡1 (mod p),可得(a+1)*(a-1)≡ 0 (mod p),a=1或a=p-1 ,所以不成立。

综上所述,x,a∈M,并且当a不同时,x也随之不同。

所以,M集合中每一个元素a都能够找到一个与之配对的x,使得x*a ≡ 1 (mod p).

(p-1)!=1*2*3*...p-1

=1*(2*x1)*(3*x3)*...*(p-1)

所以, (p-1)!≡1*(p-1)    (mod p)

即,(p-1)!≡-1     (mod p)

证明完毕

#include <bits/stdc++.h>
using namespace std; #define mem(a) memset(a, 0, sizeof(a))
const int maxn = 1e6+100;
int ans[maxn*3+100]; int isprime(int n) {
if (n == 1) return 0;
if (n == 2) return 1;
for (int i = 2; i*i<=n; i++) {
if (n%i == 0) return 0;
}
return 1;
} void init() {
mem(ans);
for (int i = 1; i<maxn; i++) {
if (isprime(i*3+7)) ans[i] = ans[i-1]+1;
else ans[i] = ans[i-1];
}
} int main() {
init();
int t;
scanf("%d", &t);
while (t --) {
int n;
scanf("%d", &n);
printf("%d\n",ans[n]);
} return 0;
}

HDU2973(威尔逊定理)的更多相关文章

  1. hdu2973-YAPTCHA-(欧拉筛+威尔逊定理+前缀和)

    YAPTCHA Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  2. 威尔逊定理--HDU2973

    参考博客 HDU-2973 题目 Problem Description The math department has been having problems lately. Due to imm ...

  3. hdu2973 YAPTCHA【威尔逊定理】

    <题目链接> 题目大意: The task that is presented to anyone visiting the start page of the math departme ...

  4. hdu5391 Zball in Tina Town(威尔逊定理)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud Zball in Tina Town Time Limit: 3000/1500 ...

  5. hdu 2973"YAPTCHA"(威尔逊定理)

    传送门 题意: 给出自然数 n,计算出 Sn 的值,其中 [ x ]表示不大于 x 的最大整数. 题解: 根据威尔逊定理,如果 p 为素数,那么 (p-1)! ≡ -1(mod p),即 (p-1)! ...

  6. HDU 5391 Zball in Tina Town【威尔逊定理】

    <题目链接> Zball in Tina Town Problem Description Tina Town is a friendly place. People there care ...

  7. YAPTCHA UVALive - 4382(换元+威尔逊定理)

    题意就是叫你求上述那个公式在不同N下的结果. 思路:很显然的将上述式子换下元另p=3k+7则有 Σ[(p-1)!+1/p-[(p-1)!/p]] 接下来用到一个威尔逊定理,如果p为素数则 ( p -1 ...

  8. HDU - 2973:YAPTCHA (威尔逊定理)

    The math department has been having problems lately. Due to immense amount of unsolicited automated ...

  9. HDU6608-Fansblog(Miller_Rabbin素数判定,威尔逊定理应用,乘法逆元)

    Problem Description Farmer John keeps a website called ‘FansBlog’ .Everyday , there are many people ...

随机推荐

  1. iOSXML & JSON 简介

    XML & JSON 简介 •JSON –作为一种轻量级的数据交换格式,正在逐步取代XML,成为网络数据的通用格式 –基于JavaScript的一个子集 –易读性略差,编码手写难度大,数据量小 ...

  2. 通过EntityFramework来操作MySQL数据库

    自己首次用到了EF,为了利人利己,故将自己今天学的记录下来. 这个项目要用到的工具是VS2015.MySQL5.7.12 . 首先我们先建一个解决方案,里面建两个项目分别是Silentdoer.Mai ...

  3. 通过C#来开启、关闭、重启Windows服务

    通过C#开启服务需要这个C#程序有相应权限,比如服务的账户是Local System的就必须以管理员权限运行C#程序才能开启或关闭. 这里只写重启的方式(就是先关闭,后开启): // Security ...

  4. mvn命令笔记

    #发布到本地仓库 mvn deploy -DaltDeploymentRepository=snapshots::default::http://mvnrepo.xxx.com/mvn/snapsho ...

  5. C#中MessageBox用法大全(附效果图)

    1.最简单的,只显示提示信息 2. 可以给消息框加上标题. 3. "确定"和"取消" 4. 给MessageBox加上一个Icon,.net提供常见的Icon共 ...

  6. Java 管程解决生产者消费者问题

    同样是实验存档.//.. 依然以生产者消费者问题作为背景. 管程(=“资源管理程序”)将资源和对资源的操作封装起来,资源使用者通过接口操作资源就 ok,不用去考虑进程同步的问题. 管程: packag ...

  7. SSH远程登录密码尝试

    import threading #创建一个登陆日志,记录登陆信息 paramiko.util.log_to_file('paramiko.log') client = paramiko.SSHCli ...

  8. GIT命令一页纸

    ,配置用户名和邮箱 $ git config --global user.name "Your Name" $ git config --global user.email &qu ...

  9. Python新式类继承的C3算法

    在Python的新式类中,方法解析顺序并非是广度优先的算法,而是采用C3算法,只是在某些情况下,C3算法的结果恰巧符合广度优先算法的结果. 可以通过代码来验证下: class NewStyleClas ...

  10. Python的类与类型

    1.经典类与新式类 在了解Python的类与类型前,需要对Python的经典类(classic classes)与新式类(new-style classes)有个简单的概念. 在Python 2.x及 ...