当前位置: 首页 > news >正文

HDU-2973 YAPTCHA

题目传送门
先把题目中的公式弄过来。

S n = ∑ k = 1 n ⌊ ( 3 k + 6 ) ! + 1 3 k + 7 − ⌊ ( 3 k + 6 ) ! 3 k + 7 ⌋ ⌋ S_n=\sum\limits_{k=1}^{n}\lfloor\frac{(3k+6)!+1}{3k+7}-\lfloor\frac{(3k+6)!}{3k+7}\rfloor\rfloor Sn=k=1n3k+7(3k+6)!+13k+7(3k+6)!⌋⌋
首先,得先了解威尔逊定理

威尔逊定理(证明后续发)

对于一个素数 p p p,有:
( p − 1 ) ! ≡ − 1 ( m o d p ) (p-1)!\equiv-1(mod\ p) (p1)!1(mod p)

分析

然后通过威尔逊定理来分析题目。
我们设 x = 3 k + 7 x=3k+7 x=3k+7,那么上面的式子就变成了:
S n = ∑ k = 1 n ⌊ ( x − 1 ) ! + 1 x − ⌊ ( x − 1 ) ! x ⌋ ⌋ S_n=\sum\limits_{k=1}^{n}\lfloor\frac{(x-1)!+1}{x}-\lfloor\frac{(x-1)!}{x}\rfloor\rfloor Sn=k=1nx(x1)!+1x(x1)!⌋⌋

x是素数

由于威尔逊定理,当 x x x是素数时, ( x − 1 ) ! + 1 ≡ 0 ( m o d p ) (x-1)!+1\equiv0(mod\ p) (x1)!+10(mod p),那么 ( x − 1 ) ! + 1 x \frac{(x-1)!+1}{x} x(x1)!+1就一定是一个整数,所以 ⌊ ( x − 1 ) ! x ⌋ \lfloor\frac{(x-1)!}{x}\rfloor x(x1)!就是一个比 ( x − 1 ) ! + 1 x \frac{(x-1)!+1}{x} x(x1)!+1 1 1 1的整数,所以原式的值为 1 1 1

x是合数

x x x是合数时,就一定有两个数 a a a b b b,满足 1 < a < b < x 1<a<b<x 1<a<b<x,所以 ( x − 1 ) ! x \frac{(x-1)!}{x} x(x1)!就是一个整数。又由于 k ≥ 1 k\ge1 k1,所以 x > 1 x>1 x>1,那么 ( x − 1 ) ! + 1 x − ( x − 1 ) ! x < 0 \frac{(x-1)!+1}{x}-\frac{(x-1)!}{x}<0 x(x1)!+1x(x1)!<0,可以得出 ⌊ ( x − 1 ) ! + 1 x − ( x − 1 ) ! x ⌋ = 0 \lfloor\frac{(x-1)!+1}{x}-\frac{(x-1)!}{x}\rfloor=0 x(x1)!+1x(x1)!=0

总结

所以综上可得,只需要判断 x x x,即 3 k + 7 3k+7 3k+7是不是素数,问题就迎刃而解了。

#include<bits/stdc++.h>
#define endl putchar('\n')
using namespace std;
const int N=5e6+5;
int read(){int x=0,f=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9')x=(x<<3)+(x<<1)+c-'0',c=getchar();return x*f;
}
void print(int x){if(x<0)putchar('-'),x=-x;if(x<10){putchar(x+'0');return;}print(x/10);putchar(x%10+'0');
}
int T;
int vis[N];
int p[N];
int cnt;
int f[N];
signed main(){for(int i=2;i<=3e6+10;i++){//素数筛if(!vis[i])p[++cnt]=i;for(int j=1;j<=cnt&&i*p[j]<=3e6+10;j++)vis[i*p[j]]=1;}for(int i=1;i<=1e6;i++)f[i]=f[i-1]+(!vis[3*i+7]);//计算前缀和T=read();while(T--){print(f[read()]);endl;}
}
http://www.xdnf.cn/news/862327.html

相关文章:

  • Maven 构建缓存与离线模式
  • 第二章 进程管理
  • 让音乐“看得见”:使用 HTML + JavaScript 实现酷炫的音频可视化播放器
  • 【论文阅读笔记】Text-to-SQL Empowered by Large Language Models: A Benchmark Evaluation
  • 【RAG优化】rag整体优化建议
  • AI全栈之路:Ubuntu云服务器部署Spring + Vue + MySQL实践指南
  • MySQL索引(index)
  • Mybatis入门到精通
  • Spark实战能力测评模拟题精析【模拟考】
  • 编程技能:格式化打印04,sprintf
  • Ubuntu 16.04 密码找回
  • 区块链安全攻防战:51% 攻击与 Sybil 攻击的应对策略
  • 目标检测任务的评估指标mAP50和mAP50-95
  • OpenCV计算机视觉实战(10)——形态学操作详解
  • 【从前端到后端导入excel文件实现批量导入-笔记模仿芋道源码的《系统管理-用户管理-导入-批量导入》】
  • 目标检测任务的评估指标P-R曲线
  • NPOI操作EXCEL文件 ——CAD C# 二次开发
  • LlamaIndex:解锁LLM潜力的数据编排利器
  • C++性能优化指南
  • Java Stream 高级实战:并行流、自定义收集器与性能优化
  • ODOO12
  • springboot--实战--大事件--文章分类接口开发详解
  • 微软的新系统Windows12未来有哪些新特性
  • 微软重磅发布Magentic UI,交互式AI Agent助手实测!
  • 使用Virtual Serial Port Driver+com2tcp(tcp2com)进行两台电脑的串口通讯
  • RT Thread平台下 基于N32G45x和N32L40x的drv_pwm驱动实现
  • PageHelper-分页插件
  • 【工具使用】STM32CubeMX-FreeRTOS操作系统-任务、延时、定时器篇
  • win11 连接共享打印机提示:错误0x00000709
  • Dify智能问数大模型Text2SQL流程编排从0到1完整过程