传送门

题意:

  给出自然数 n,计算出 Sn 的值,其中 [ x ]表示不大于 x 的最大整数。

题解:

  根据威尔逊定理,如果 p 为素数,那么 (p-1)! ≡ -1(mod p),即 (p-1)! + 1 = p*q.

  令 f(K) = 

  ①如果 3K+7 为素数,则 (3K+7-1)! ≡ -1(mod 3K+7),即 (3K+6)! = (3K+7)*q -1.

  那么表达式 可化简为 [ (3K+7)*q / (3K+7) - 1 / (3K+7) ] = [ q - 1 / (3K+7)].

  易得 q-1 < q - 1 / (3K+7) < q ,所以=q-1,那么 f(K) = q-(q-1) = 1.

  ②如果 3K+7 为合数,则 (3K+6)! 能被 (3K+7) 整除,f(K) = 0;

  由此,本题转化为求解K在[1,n]范围内 (3K+7) 的素数个数。

  对②的证明:

令p=a*b,(<a<=b)
①若a!=b,则(p-)!=**..*a*..*b*..*(p-),显然 (a*b) | (p-)!;
②若a==b且为素数,则当a>2时,a*b=a*a>*a,
若p>,则(p-)! = **..*a*..*(2a)*..(p-),同样有(a*b)|(p-)!;
综上,如果p为合数,则 p | (p-)!;

AC代码:

 #include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
const int maxn=1e6+; int n;
int ans[maxn];//ans[i]:[1,i]中,满足 3K+7 为素数的整数个数 bool isPrime(int num)
{
int x=sqrt(num);
for(int i=;i <= x;++i)
if(num%i == )
return ;
return ;
}
void primeTable()
{
ans[]=;
for(int i=;i < maxn;++i)//离散计算出所有的结果
ans[i]=ans[i-]+isPrime(*i+);
}
int main()
{
int test;
scanf("%d",&test);
primeTable();
while(test--)
{
scanf("%d",&n);
printf("%d\n",ans[n]);
}
return ;
}

  

hdu 2973"YAPTCHA"(威尔逊定理)的更多相关文章

  1. HDU 2973 YAPTCHA (威尔逊定理)

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

  2. HDU - 2973 - YAPTCHA

    先上题目: YAPTCHA Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  3. HDU2937 YAPTCHA(威尔逊定理)

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

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

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

  5. hdu2973 YAPTCHA【威尔逊定理】

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

  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 6608:Fansblog(威尔逊定理)

    Fansblog Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Subm ...

  9. HDU2973(威尔逊定理)

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

随机推荐

  1. @Autowired 与@Resource的区别(详细)

    参考:@Autowired 与@Resource的区别(详细) spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource.@Pos ...

  2. dw擴展jquery

    https://jingyan.baidu.com/article/90895e0fbbb65764ec6b0bd1.html

  3. Asp.Net Core get client IP

    不废话,直接上代码,你懂得. public string GetRequestIP(bool tryUseXForwardHeader = true) { string ip = null; // t ...

  4. Servlet篇 之 web服务器

    创建web项目,在web项目中创建html页面,然后把项目部署到web服务器里面,启动服务器之后,可以使用浏览器通过URL地址的方式,访问到web项目中的html页面了 Web服务器: 常用tomca ...

  5. Ubuntu开发用新机安装流程

    1.SSH安装 Ubuntu缺省已安装客户端,此处安装服务端 sudo apt-get install openssh-server 确认sshserver是否启动 netstat -tlp | gr ...

  6. BZOJ1005 HNOI2008明明的烦恼(prufer+高精度)

    每个点的度数=prufer序列中的出现次数+1,所以即每次选一些位置放上某个点,答案即一堆组合数相乘.记一下每个因子的贡献分解一下质因数高精度乘起来即可. #include<iostream&g ...

  7. 【XSY2733】Disembrangle DP

    题目描述 有一个\(3\times n\)的网格,一些格子里已经有棋子了,一些格子里还没有. 每次你可以选择往一个没有棋子的格子里放一个棋子,但要满足这个格子上下两个格子都有棋子或左右两个格子都有棋子 ...

  8. Ubuntu解压

    tar -zxvf FileName.tar.gz tar -jxvf FileName.tar.bz2 unzip FileName.zip sudo  dpkg  -i   文件名.deb

  9. 利用SSH上传、下载(使用sz与rz命令)

    安装yum -y install lrzsz 用法sz用法:从服务器发送出去相当于下载一个文件sz filename 下载多个文件sz filename1 filename2rz用法:从外面接收回来, ...

  10. [SPOJ375]QTREE - Query on a tree【树链剖分】

    题目描述 给你一棵树,两种操作. 修改边权,查找边权的最大值. 分析 我们都知道,树链剖分能够维护点权. 而且每一条边只有一个,且唯一对应一个儿子节点,那么就把信息放到这个儿子节点上. 注意,lca的 ...