约瑟夫问题的升级版,每次出去的是前一个出去的人位置+手上的数字(正往前,负往后)。第i个出去的人拿的糖是i的约数的个数。求拿糖最多的人和他的糖果数。

这里用到了反素数的知识,在这直接打表

题目

AC代码:

#include<stdio.h>
#include<string.h>
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1 const int N = ;
int v[N],sum[N<<],n,k;
char name[N][];
int rprim[]= {,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,};///反素数
int nprim[]= {,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,,,};///反素数的约数个数
void build(int l,int r,int rt)
{
sum[rt]=r-l+;///sum储存这个区间有多少的数
if(l<r)
{
int m=(l+r)>>;
build(lson);
build(rson);
}
}
int update(int l,int r,int rt,int k)
{
sum[rt]--;///这个区间减少一个数
if(l==r)
return l;///返回这个减少的数的原始下标
int m=(l+r)>>;
if(k<=sum[rt<<])///要找的第k个数小于等于左半区间的个数
return update(lson,k);///就递归左子树
else
return update(rson,k-sum[rt<<]);///否则就在右子树,且k-左子树的个数
}
int main( )
{
while(scanf("%d%d",&n,&k)!=EOF)
{
memset(name,,sizeof(name));
for(int i= ; i<=n ;i++)
scanf("%s%d",name[i],&v[i]);
build(,n,);
int tn=n,now,p=;
while(rprim[p]<=n)///找出n里最大的反素数
p++;
for(int i= ; i<rprim[p-] ; i++)///反素数前的都出队
{
now=update(,n,,k);///当前出队的序号
tn--;///剩下的人数
if(v[now]>)///向前数
k=(k-+v[now])%tn;///先减去本身这个位置 然后往前v个 再取模
else
k=((k+v[now])%tn+tn)%tn;///直接往后 然后要取模再取模保证正数
if(k==)///如果刚好是tn 取模会变成0
k=tn;
}
now=update(,n,,k);///得到第最大的反素数个出队的人的序号
printf("%s %d\n",name[now],nprim[p-]);
}
return ;
}

不懂反素数的可以点击此链接:反素数

最新文章

  1. tomcat设置虚拟目录开启文件下载在服务
  2. art.dialog.art 中,将子页面窗口中的值传递给父框架中
  3. zabbix解决中文乱码问题(没有测试成功)
  4. hdu 1078 FatMouse and Cheese
  5. div+css之清除浮动
  6. jQuery之Nestable
  7. NLP自然语言处理学习笔记三(集成开发环境)
  8. Spark Tungsten揭秘 Day4 内存和CPU优化使用
  9. c语言指针说解
  10. 几种工具反编译被编译好的DLL文件
  11. java中byte, iso-8859-1, UTF-8,乱码的根源
  12. 关于Mongo的一些坑
  13. Spring中的线程池和定时任务功能
  14. JavaScript Math(数学对象)
  15. Python request SSL证书问题
  16. js Base64 转化成图片格式
  17. JAVA 多线程(2)
  18. php项目核心业务(增、删、改、查)(第三篇)
  19. Spring Boot学习记录03_一些属性配置文件
  20. 【PPT大放送】MPD软件工作坊北京站圆满落幕 深圳站即将开幕!

热门文章

  1. HBase入门基础教程 HBase之单机模式与伪分布式模式安装
  2. CentOS 6.3 下编译Nginx(笔记整理)
  3. Comparatable接口和Comparator接口的使用与区别
  4. 面试题:struts 拦截器和过滤器
  5. 把Spark SQL的metadata存储到mysql
  6. CodeForces 404D Minesweeper 1D (DP)
  7. 《Head First Servlets & JSP》-10-定制标记开发
  8. 自动化打包资源混淆集成python实践----资源混淆
  9. JavaScript CheckBox实现全选和部分选择
  10. MongoDB 分片2