博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[luogu4161 SCOI2009]游戏 (DP)
阅读量:5155 次
发布时间:2019-06-13

本文共 928 字,大约阅读时间需要 3 分钟。

Solution

可以发现实际上是把n分为几个循环节,然后找循环节的\(lcm\)是这次的排数

\(lcm\)必然是一些最高次幂的质数的成积,那么就dp求一下所有情况就好了
PS:注意并不是必须要等于n小于n都行,因为可以在后面补1而\(lcm\)不变

Code

#include 
#include
#include
#include
#include
#include
#define Re register#define int long long#define F(i,a,b) for(Re int i=(a);i<=(b);i++)#define R(i,a,b) for(Re int i=(b);i>=(a);i--)using namespace std;inline int read() { int x=0,f=1;char c=getchar(); while(!isdigit(c)) {if(c=='-')f=-f;c=getchar();} while(isdigit(c)) x=(x<<1)+(x<<3)+c-48,c=getchar(); return x*f;}const int N=1010;bool vis[N];int n,tot,ans;int pri[N],f[N];void init() { F(i,2,n) { if(!vis[i]) pri[++tot]=i; for(Re int j=1;j<=tot&&i*pri[j]<=n;j++) { vis[i*pri[j]]=1; if(i%pri[j]==0) break; } }}signed main() { n=read(); init();// F(i,1,tot) printf("%d ",pri[i]);cout<

转载于:https://www.cnblogs.com/Menteur-Hxy/p/9737431.html

你可能感兴趣的文章
课后作业-阅读任务-阅读提问-4
查看>>
Delphi 深入浅出VCL(2)-TObject所有对象的根
查看>>
配置IIS虚拟目录遇到的5个问题
查看>>
2-03顺序表的操作
查看>>
耿丹CS16-2班第一次作业汇总
查看>>
查看mysql表大小
查看>>
命令行程序测试自动化
查看>>
My Blog
查看>>
array_reduce() 与 array_map()
查看>>
SASS实现代码的重用:混合器Mixin、继承
查看>>
《windows核心编程系列》三谈谈内核对象及句柄的本质
查看>>
Linux下安装maven
查看>>
使用OpenMP实现并行归并排序(Report)
查看>>
转:【Java并发编程】之十五:并发编程中实现内存可见的两种方法比较:加锁和volatile变量...
查看>>
linux nohup【转】
查看>>
SQL语句优化
查看>>
校验银行卡号是否符合Luhn算法及生成符合Luhn算法的银行卡号
查看>>
MFC 双缓冲加载背景
查看>>
记录自己最近的学习状态
查看>>
hdu 1142 最短路+记忆化深搜---好题
查看>>