HDU- 2973 YAPTCHA(威尔逊定理)
题目链接:点击查看
题目大意:求解:
题目分析:我们需要提前知道威尔逊定理:如果p是素数,则
所以我们可以分情况讨论:
- 当3k+7是素数时,,因为威尔逊定理,,所以一定是一个整数,我们设为x,这样一来后面的,因为一定小于等于1,所以取整后一定是x-1,这样一来f(k)=1
- 当3k+7不是素数时,(3k+6)!一定能被(3k+7)整除(显然成立),然后上述公式就转换成了,所以f(k)=0
综上所述,先用欧拉线性筛打一个3e6的素数表,因为3k+7最大能到3e6+7,然后预处理一个前缀和,就可以O(1)回答每一个查询了
代码:
#include<iostream>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cctype>
#include<stack>
#include<queue>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<sstream>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=1e7+100;int cnt=0;bool vis[N];int pri[N];int sum[N];void P()
{memset(vis,false,sizeof(vis));for(int i=2;i<N;i++){if(!vis[i])pri[cnt++]=i;for(int j=0;j<cnt&&pri[j]*i<N;j++){vis[pri[j]*i]=true;if(i%pri[j]==0)break;}}memset(vis,false,sizeof(vis));for(int i=0;i<cnt;i++)vis[pri[i]]=true;
}void init()
{P();sum[0]=0;for(int i=1;i<1e6+10;i++){sum[i]=sum[i-1];if(vis[3*i+7])sum[i]++;}
}int main()
{
// freopen("input.txt","r",stdin);init();int w;cin>>w;while(w--){int n;scanf("%d",&n);printf("%d\n",sum[n]);}return 0;
}
HDU- 2973 YAPTCHA(威尔逊定理)相关推荐
- hdu 2973 YAPTCHA(C++)(威尔逊定理)
hdu 2973 YAPTCHA 点击做题网站链接 题目描述 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- hdu 6608 Fansblog 威尔逊定理+大数阶乘取模
传送门 题意:给出一个质数P,找出小于P的最大的质数N,求出N的阶乘模P.(P∈[1e10,1e14]) 思路:威尔逊定理:一个数n若是质数, 则有 (n−1) ! ≡ n−1mod n. 于是可以先 ...
- 三个重要的同余式——威尔逊定理、费马小定理、欧拉定理 + 求幂大法的证明
一.威尔逊定理 若p为质数,则 p|(p-1)!+1 亦:(p-1)! ≡ p-1 ≡ -1(mod p) 例题: HDU 2973 YAPTCHA (威尔逊定理及其逆定理) 解题报告见http:// ...
- 7. 数论四大定理(威尔逊定理、欧拉定理、费马小定理、孙子定理)
一.准备工作 点击查看数论基础知识 二.威尔逊定理 威尔逊定理给出了判定一个自然数是否为素数的充分必要条件.但是由于阶乘是呈爆炸增长的,其结论对于实际操作意义不大. 1. 定理及其变形 当且仅当p为素 ...
- HDU - 2973威尔逊定理
核心问题就是那个等式 我们观察到等式可以写成(n-1)!-1/n-[(n-1)!/n]的形式,这样就应该联想到威尔逊定理了. 回顾一下威尔逊定理的内容:当且仅当n为素数的时候n|(n-1)!-1,n为 ...
- HDU多校第三场6608 Fansblog(米勒罗宾+威尔逊定理)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=6608 题目说给你一个1e9−1e14的素数p,让你找到比p小的最大素数q,求q!mod p的值题目说 ...
- 【HDU 6608】Fansblog(威尔逊定理+逆元+快速乘+快速幂)
题目:点击打开题目链接 题意:输入一个素数 P,找出 P 的前一个素数,并求出 ! mod P的值.(1e9≤ P ≤1e14) 思路: 1.首先找出Q.因为自然数是由素数.合数.1和0组成的,并且数 ...
- HDU 6608:Fansblog(威尔逊定理)
Fansblog Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Subm ...
- 数论四大定理(欧拉定理、费马小定理、中国剩余定理、威尔逊定理)
前置知识 同余 假设 a,ba,ba,b 都是整数,如果 nnn 是一个正整数,且存在整数 kkk 使得 a−b=k×na−b=k \times na−b=k×n,则称 a,ba,ba,b 模 nnn ...
最新文章
- 四招避免SEO优化过度
- PO BO VO DTO POJO DAO概念及其作用(附转换图)
- Android上玩玩Hook?
- 从NoSQL到Lakehouse,Apache Doris的13年技术演进之路
- Java 多态之“绑定”
- 解字符串不能超过8000的方法及交叉表的处理
- 机器学习之 weka学习(五)示例用法
- 管理后台--3,修改分类
- 第九:Pytest进阶之xunit fixture
- 好险!一入职,就遇到MySQL这么大Bug!差点背锅走人~
- 网络QoS原理与实现
- java5个成员_JavaSE基础知识(5)—面向对象(5.2类的成员)
- Python类调用实例方法
- panabit安装和默认密码
- 动漫学日语《白熊咖啡厅》(更新中)
- hdu 1705[皮克定理]
- 淘宝系商品详情系统架构设计
- 大学开设大数据专业,都安排了哪些课程?
- ZLIB 压缩的数据格式规范
- IOS 中视频和音乐合成