HDU2973(威尔逊定理)
YAPTCHA
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 875 Accepted Submission(s): 458
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.
13
1
2
3
4
5
6
7
8
9
10
100
1000
10000
0
1
1
2
2
2
2
3
3
4
28
207
1609
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(威尔逊定理)的更多相关文章
- hdu2973-YAPTCHA-(欧拉筛+威尔逊定理+前缀和)
YAPTCHA Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- 威尔逊定理--HDU2973
参考博客 HDU-2973 题目 Problem Description The math department has been having problems lately. Due to imm ...
- hdu2973 YAPTCHA【威尔逊定理】
<题目链接> 题目大意: The task that is presented to anyone visiting the start page of the math departme ...
- hdu5391 Zball in Tina Town(威尔逊定理)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Zball in Tina Town Time Limit: 3000/1500 ...
- hdu 2973"YAPTCHA"(威尔逊定理)
传送门 题意: 给出自然数 n,计算出 Sn 的值,其中 [ x ]表示不大于 x 的最大整数. 题解: 根据威尔逊定理,如果 p 为素数,那么 (p-1)! ≡ -1(mod p),即 (p-1)! ...
- HDU 5391 Zball in Tina Town【威尔逊定理】
<题目链接> Zball in Tina Town Problem Description Tina Town is a friendly place. People there care ...
- YAPTCHA UVALive - 4382(换元+威尔逊定理)
题意就是叫你求上述那个公式在不同N下的结果. 思路:很显然的将上述式子换下元另p=3k+7则有 Σ[(p-1)!+1/p-[(p-1)!/p]] 接下来用到一个威尔逊定理,如果p为素数则 ( p -1 ...
- HDU - 2973:YAPTCHA (威尔逊定理)
The math department has been having problems lately. Due to immense amount of unsolicited automated ...
- HDU6608-Fansblog(Miller_Rabbin素数判定,威尔逊定理应用,乘法逆元)
Problem Description Farmer John keeps a website called ‘FansBlog’ .Everyday , there are many people ...
随机推荐
- iOS APP内购
看到网上文章一大把,看了这个觉得挺不错的,谢谢 iOS大全 公众平台; 原文:http://mp.weixin.qq.com/s?__biz=MzAxMzE2Mjc2Ng==&mid=2652 ...
- 链表创建和链表遍历算法的演示_C语言
今天搞了一个多小时,头是疼的,应该是没休息好吧,学习了数据结构这一节,感觉收益良多,下面贴上代码和心得: /*24_链表创建和链表遍历算法的演示*/ # include <stdio.h> ...
- mysql 证明为什么用limit时,offset很大会影响性能
本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/117 首先说明一下MySQL的版本: mysql> sel ...
- Linux第七节随笔-下磁盘管理
baidubaike 磁盘管理物理磁盘---> RAID--->文件系统--->用户使用LVM概念简述Raid详细解说 0 ...
- python中的virtualenv是干嘛的?
众所周知,python的各种库跨度比较大,比如如果你开发web的话,一个项目使用的Django是1.8, 而另一个项目使用的Django版本是1.7, 这就给开发人员带来了很大的困扰. 因此,pyth ...
- UWP 应用通知Notifications
之前说UWP 使用OneDrive云存储2.x api(二)[全网首发],微识别实现了上传下载的功能,那么为了给用户更上一层楼的体验,那就是在上传下载完成之后,弹出一通知Notifications. ...
- Qt编写导航按钮
做各种各样的界面的时候,经常需要做一排按钮用于切换到对应界面,俗称导航按钮或者导航菜单,参照过各种各样的主界面导航布局,特意编写导航按钮自定义控件,结合各种情况,继承自QPushButton.已集成在 ...
- php使用websocket示例详解
一.php 中处理 websocket WebSocket 连接是由客户端主动发起的,所以一切要从客户端出发.第一步是要解析拿到客户端发过来的 Sec-WebSocket-Key 字符串. 复制代码代 ...
- SQL基础学习_06_集合运算和联结
集合运算 1. 并集:UNION 例: SELECT shohin_id, shohin_mei FROM Shohin UNION SELECT shohin_id ...
- Django资源
官网地址:https://www.djangoproject.com/ 最新发布版本是:1.11.7 官网提供不同版本的文档:1.7.1.8.1.9.1.10.1.11.2.0.dev 安装不同的版本 ...