传送门

Description

N个灯按照1~N标号,按下一个开关i,所有标号是i的约数的开关都改变状态,目标是关掉所有的灯,如果当前最优策略≤k就直接按照最优策略走。否则随机按下一个开关。给出每个灯的当前状态,问期望步数*n!(mod 100003)

Solution

•首先可以直接N个开关的最优策略需要的步数t,(最大的状态为开的灯一定要按,以此类推)

•状态i表示当前的数按照最优策略需要i步

•最后的状态看成是0

考虑f[i]表示从状态i到状态i-1的期望步数,最后答案是\(n!*\sum_{i=1}^{t} f[i] \ \ \mod 100003\)

当\(i \leq k\)或者\(i=n\)时,\(f[i]=1\)

\(f[i]=\frac{i}{n}+\frac{n-i}{n}(f[i+1]+f[i]+1) \ \ \ k<i<n\)

Code 

#include<bits/stdc++.h>
#define ll long long
#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))
inline int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();}
return x*f;
}
#define MN 100005
#define mod 100003
int n,k,a[MN],t;
int mark[MN];
ll inv[MN],g[MN],fac;
int main()
{
n=read();k=read();
register int i,j;
for(fac=i=1;i<=n;++i) a[i]=read(),fac=fac*i%mod;
for(i=n;i;--i)
{
int p=a[i];
for(j=i<<1;j<=n;j+=i) if(mark[j]) p^=1;
if(p) mark[i]=1,t++;
}
if(t<=k) return 0*printf("%lld",t*fac%mod);
inv[1]=1;
for(i=2;i<=n;i++) inv[i]=(mod-mod/i)*inv[mod%i]%mod;
for(i=1;i<=k;i++) g[i]=1;
for(g[n]=1,i=n-1;i>k;--i) g[i]=((n-i)*g[i+1]%mod+n)*inv[i]%mod;
ll ans=0;
for(i=1;i<=t;++i) ans+=g[i];
printf("%lld",ans*fac%mod);
return 0;
}

Blog来自PaperCloud,未经允许,请勿转载,TKS!

最新文章

  1. 关于在DataGrid.RowDetailsTemplate中的控件查找不到的问题
  2. magento jQuery冲突N种方法
  3. ORACLE 默认密码确认
  4. [ActionScript 3.0] AS3.0 水面波纹效果
  5. Oracle 排序分析函数之ROW_NUMBER、RANK和DENSE_RANK
  6. Linux磁盘管理:LVM逻辑卷的创建及使用
  7. 【剑指offer】Q40:数组中出现一次的数
  8. UltraEdit-32 温馨提示:右协会,取消 bak文件
  9. tomcat部署在centos6.8上的乱码问题
  10. JavaScript设计模式 Item 7 --策略模式Strategy
  11. 【Python】Python3纯代码极简教程
  12. 环境部署(一):Linux下安装JDK
  13. Django目录结构分析
  14. 南阳219----An problem about date
  15. C语言字符串读入函数笔记
  16. MySql安装和基本管理&amp;mysql语句
  17. Java图片验证码乱码问题
  18. Python2.7-io
  19. django之创建第7-5-第二种传值方式(time/1232/xiaodneg)
  20. Oracle分析関数

热门文章

  1. 关于MQ的几件小事(三)如何保证消息不重复消费
  2. jQuery遍历(2)
  3. Keras实现Hierarchical Attention Network时的一些坑
  4. c# 定制处理未处理异常
  5. Flink系列之流式
  6. Linux命令——expr
  7. spark-submit之使用pyspark
  8. RT-Thread--中断管理
  9. 子div撑不开父div的几种解决办法:
  10. IIS 自动化发布工具实现【一】