hdu 2973"YAPTCHA"(威尔逊定理)
题意:
给出自然数 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"(威尔逊定理)的更多相关文章
- HDU 2973 YAPTCHA (威尔逊定理)
YAPTCHA Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- HDU - 2973 - YAPTCHA
先上题目: YAPTCHA Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- HDU2937 YAPTCHA(威尔逊定理)
YAPTCHA Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- HDU - 2973:YAPTCHA (威尔逊定理)
The math department has been having problems lately. Due to immense amount of unsolicited automated ...
- hdu2973 YAPTCHA【威尔逊定理】
<题目链接> 题目大意: The task that is presented to anyone visiting the start page of the math departme ...
- 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 6608:Fansblog(威尔逊定理)
Fansblog Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Subm ...
- HDU2973(威尔逊定理)
YAPTCHA Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
随机推荐
- Centos rpm包安装PHP所需包
yum -y install php php-devel php-fpm php-xml php-pdo php-ldap php-mysql
- yii2的下载安装
1.直接使用归档文件安装yii2的高级模板: 从 yiiframework.com 下载归档文件. 下载yii2的高级模板的压缩文件, 将yii-advanced-app-2.0.12文件夹复制到项目 ...
- 魔术方法:__set、__get
__set: 在设置对象里边不能直接设置(或没有)的属性值的时候,自动去被调用 class Track { private $track_name; public function __set($na ...
- ADO.NET工具类(一)
using System; using System.Collections.Generic; using System.Text; using System.Data.SqlClient; usin ...
- poj2186(tarjan缩点)
题意:有n头奶牛,假如奶牛A觉得奶牛B很厉害,那么就有一条由A指向B的边,然后有个传递关系,if(A→B,B→C,那么A→C),让你求出被除了自己以外所有的奶牛都认为厉害的的奶牛个数: 解题思路:看到 ...
- ubuntu6.04安装
一.在windows操作系统下准备ubuntu系统的安装盘 1. 下载ubuntu的ISO文件 这一步相对简单,网络上面有很多的链接下载.这里贴一个ubuntu的官方网站链接,可以下载到ubuntu ...
- 自己实现strchr函数与strstr函数
char* my_strchr(char* str, int i) { if (NULL == str) { return NULL; } while ('\0' != *str && ...
- 使用RestTemplate测试视频上传的Post请求
以往多用RestTemplate处理接口的调用以及与Ribbon/Feign配合使用调用微服务接口,近日写了一个处理Post文件上传的解决方案,其实就是将后台所需的MultipartFile,在请求P ...
- Go语言变量和常量
一.变量相关 1.变量声明 C# : int a; Go : var a int; 需要在前面加一个var关键字,后面定义类型 可以使用 var( a int; b string;)减少var 2.变 ...
- php 编译常见错误
1.configure: error: No curses/termcap library found 网上有的说法是:–with-named-curses-libs=/usr/lib/libncur ...