YAPTCHA

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1490    Accepted Submission(s):
811

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
翻译:求Sn。中括号([])表示取整。
解题过程:
令p=3*k+7。
威尔逊定理:当且仅当p为素数,(p-1)! ≡ -1 (mod p) → (p-1)!+1 ≡ 0 (mod p)
1.若p是素数, ( (p-1)!+1 )/p是个整数,设为x,则(p-1)!/p比这个整数小一点点,取整后是x-1,
则[  ( (p-1)!+1 )/p - [(p-1)!/p] ]=1;
2.若p是合数,(p-1)!/p是个整数,设为y,则( (p-1)!+1 )/p比这个整数大一点点,取整后还是y,
则[  ( (p-1)!+1 )/p - [(p-1)!/p] ]=0;
3.前缀和打表Sn。
 #include <iostream>
#include<stdio.h>
#include <algorithm>
#include<string.h>
#include<cstring>
#include<math.h>
#define inf 0x3f3f3f3f
#define ll long long
using namespace std;
const int maxx=;
int prime[];
bool vis[];
int ans[];
int cnt; void init()
{
cnt=;
memset(vis,true,sizeof(vis));
vis[]=vis[]=false;
for(int i=;i<=maxx;i++)//欧拉筛
{
if(vis[i])
prime[cnt++]=i;
for(int j=;j<cnt && prime[j]*i<=maxx;j++)
{
vis[ prime[j]*i ]=false;
if( i%prime[j]== ) break;
}
}
memset(ans,,sizeof(ans));
int p;
for(int k=;k<=;k++)
{
p=*k+;
if(vis[p])
ans[k]=ans[k-]+;
else
ans[k]=ans[k-];
}
} int main()///hdu2973,威尔逊定理+前缀和
{
init();
int t,n;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
printf("%d\n",ans[n]);
}
return ;
}

hdu2973-YAPTCHA-(欧拉筛+威尔逊定理+前缀和)的更多相关文章

  1. UVA12995 Farey Sequence [欧拉函数,欧拉筛]

    洛谷传送门 Farey Sequence (格式太难调,题面就不放了) 分析: 实际上求分数个数就是个幌子,观察可以得到,所求的就是$\sum^n_{i=2}\phi (i)$,所以直接欧拉筛+前缀和 ...

  2. 【BZOJ 2190】【SDOI 2008】仪仗队 欧拉筛

    欧拉筛模板题 #include<cstdio> using namespace std; const int N=40003; int num=0,prime[N],phi[N]; boo ...

  3. [51NOD1181]质数中的质数(质数筛法)(欧拉筛)

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1181 思路:欧拉筛出所有素数和一个数的判定,找到大于n的最小质 ...

  4. 素数筛&&欧拉筛

    折腾了一晚上很水的数论,整个人都萌萌哒 主要看了欧拉筛和素数筛的O(n)的算法 这个比那个一长串英文名的算法的优势在于没有多次计算一个数,也就是说一个数只筛了一次,主要是在%==0之后跳出实现的,具体 ...

  5. 欧拉筛,线性筛,洛谷P2158仪仗队

    题目 首先我们先把题目分析一下. emmmm,这应该是一个找规律,应该可以打表,然后我们再分析一下图片,发现如果这个点可以被看到,那它的横坐标和纵坐标应该互质,而互质的条件就是它的横坐标和纵坐标的最大 ...

  6. pku-2909 (欧拉筛)

    题意:哥德巴赫猜想.问一个大于2的偶数能被几对素数对相加. 思路:欧拉筛,因为在n<215,在3万多,一个欧拉筛得时间差不多4*104, 那么筛出来的素数有4千多个,那么两两组合直接打表,时间复 ...

  7. hdu2421-Deciphering Password-(欧拉筛+唯一分解定理+积性函数+立方求和公式)

    Deciphering Password Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  8. POJ-3126.PrimePath(欧拉筛素数打表 + BFS)

    给出一篇有关素数线性筛和区间筛的博客,有兴趣的读者可以自取. 本题大意: 给定两个四位的素数,没有前导零,每次变换其中的一位,最终使得两个素数相等,输出最小变换次数.要求变换过程中的数也都是素数. 本 ...

  9. 欧拉筛(线性筛) & 洛谷 P3383 【模板】线性筛素数

    嗯.... 埃氏筛和欧拉筛的思想都是相似的: 如果一个数是素数,那么它的所有倍数都不是素数.... 这里主要介绍一下欧拉筛的思路:(欧拉筛的复杂度大约在O(n)左右... 定义一个prime数组,这个 ...

随机推荐

  1. MySQL高可用架构之基于MHA的搭建

    一.MySQL MHA架构介绍: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Fa ...

  2. Android 6.0动态申请权限时,权限框闪一下就消失的问题;

    Android 蓝牙BLE开发需要位置权限,不然扫描不到周围的蓝牙信息: 位置权限申请: if (Build.VERSION.SDK_INT < 23){return;} //判断是否有权限 i ...

  3. hive计算周一的日期

    ) FreeMarker --',-7)?date('yyyy-MM-dd'),'week')?string('yyyy-MM-dd')}'

  4. Django之三种文件上传

    方式一: 通过form表单提交到后台 前端: <!DOCTYPE html> <html lang="en"> <head> <meta ...

  5. PowerDesigner 概念数据模型(CDM) 说明

        ref: https://blog.csdn.net/tianlesoftware/article/details/6871179 关于PowerDesigner的说明参考: PowerDes ...

  6. <创新思维与实践>总结梳理

    2017年12月3-4号 培训了两天的创新思维与实践,有时间要补充总结一下. ---todo

  7. couchdb安装

    fabric涉及到了couchdb做为数据库,所以单独安装一个进行测试,当然也可以使用docker来安装. 项目地址:http://couchdb.apache.org/ 这里采用windows来安装 ...

  8. 19.python设置单线程和多线程

    1.单线程实例: 代码如下: from time import ctime,sleep def music(A): for i in range(2): print ("I was list ...

  9. python中的open、close、read、write、len、exists

    open()打开文件 close()关闭文件 read()读取文件内容 write()写入内容 len()检查文件内容长度 exists()检查文件是否存在 我们举一个例子,将上方的内容全部应用到实际 ...

  10. Python: 对CSV文件读写 和 Md5加密

    1. python 有专门的csv包,直接导入即可. import csv: 2. 直接使用普通文件的open方法 csv_reader=open("e:/python/csv_data/l ...