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. Wincc flexable的局势视图的组态

    1.趋势视图介绍 2.实时趋势视图的组态 1)创建连接和变量 2)开始组态局势视图 3)设置趋势视图的属性,添加一个趋势 3.模拟运行HMI,观察局势图

  2. 解题思路:house robber i && ii && iii

    这系列题的背景:有个小偷要偷钱,每个屋内都有一定数额的钱,小偷要发家致富在北京买房的话势必要把所有屋子的钱都偷了,但是屋子之内装了警报器,在一定条件下会触发朝阳群众的电话,所以小偷必须聪明一点,才能保 ...

  3. 编译c语言程序扩展ruby

    环境: windows 10 64bit ruby 2.2.4p230 (2015-12-16 revision 53155) [i386-mingw32] gcc version 4.8.1 (GC ...

  4. Selinux安全机制

    1.Selinux安全机制简介 Selinux是Google在Android 4.4上正式推出的一套以SELinux为基础于核心的系统安全机制.而SELinux则是由美国NSA(国安局)和一些公司(R ...

  5. Python第二十四天 binascii模块

    Python第二十四天 binascii模块 binascii用来进行进制和字符串之间的转换 import binascii s = 'abcde' h = binascii.b2a_hex(s) # ...

  6. 如何更改 iOS 和安卓浏览器上的 input[type="radio"] 元素的默认样式?

    Safari 上的默认样式是这样的, 背景颜色可以使用background-color改变,但中间那个点始终无法去掉. 我查了一些jQuery插件,如iCheck.js,但是那说明写得我都看不明白,根 ...

  7. POI 导出导入工具类介绍

    介绍: Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. .NET的开发人员则可以利用NPOI (POI ...

  8. Debian安装fail2ban来防止扫描

    vps的root密码不要设置的太简单,这样很容易被攻破,你可以安装如下软件来降低vps被攻破的机会. 输入如下命令: apt-get install fail2ban 提示如下表示安装完成: root ...

  9. windows的ReactNative挖坑一分钟爬坑一小时

    其实开发并不需要Android Studio来开发,因为命令行都是要自己手打的,所以就开始了我的挖坑爬坑之旅 首先安装React Native要用到的git.nodejs等等这里不讲了,主要讲在手机上 ...

  10. JAVA的命名方式 ,JAVA的第一个打印时间的程序

    本文内容来自:Java的命名方式 ,Java的第一个打印时间的程序 – Break易站 1. Java的命名方式 Java采用了一种全新的方法来避免上述所有问题·为了给一个类库生成不会与其他名字混淆的 ...