题目描述

Xerxes 在和他的同学们做一个游戏,游戏规则如下:

最开始的时候 n 个人站成一排,编号为 1,2,3,4,…

每一轮编号为质数的同学将会被标记,这一轮过后被标记的同学将会从这一排中离开。

在每一轮一些同学离开后,剩余的同学将会按照编号从小到大的顺序重新从 1开始编号,如果有一轮结束后这一排中剩下的同学个数小于 4,那么游戏结束,剩下的所有人将会赢得游戏。

例如,n=10开始的时候:

1 2 3 4 5 6 7 8 9 10

第一轮游戏过后,编号为 2,3,5,7的同学将会离开,这一排变为(以下编号为最开始的编号):

1 4  6 8 9 10

下一轮,原来编号为 4,6,9的同学将会离开,因为他们的新编号为 2,3,5,是质数.

最后,这一排变为(以下编号为最开始的编号):

1 8 10

共 3人,少于 4人,因此游戏结束,最开始编号为 1,8,10的同学赢得了游戏。

当人数比较多的时候,Xerxes 感觉游戏过程太长了,因此他希望你能帮他写一个程序,来求出当开始有 n 人的时候最后获胜的是哪几个同学,并输出他们的最开始的编号。

输入

一个数 n(3<n≤200)表示初始人数.

输出

一行若干个数(不超过 3 个),表示最终获胜的同学的初始编号.

输入输出样例

样例输入 #1

10

样例输出 #1

1 8 10

样例输入 #2

15

样例输出 #2

1 14

参考解答

//2022.10.30
//2022.12.2添加注释
#include<stdio.h>
#include<math.h>
int isprime(int x)//判断素数
{int i;if(x<2)return 0;if(x==2)return 1;for(i=2;i<x;i++)if(x%i==0)return 0;            return 1;
}
int game(int a[],int n)
{int cnt=0;for(int i=2;i<=n;i++){if(isprime(i)==1)//判断是否是素数{a[i]=0;//将素数的位置标记为0cnt++;//计数器加一}}if(a[2]==0)//如果两个删去的素数位置连续,后面的数向前移一遍for(int j=2;j<=n;j++)a[j]=a[j+1];for(int k=2;k<=n;k++)if(a[k]==0)for(int j=k;j<=n;j++)a[j]=a[j+1];//将删去的数后面的数前移n-=cnt;//总数减去计数器得到一遍游戏后剩下的人数return n;
}
int main()
{int n;scanf("%d",&n);int a[n+1];for(int i=1; i<=n; i++)a[i]=i;while(n>3)//判断每次游戏过后剩下的人数是否小于3n=game(a,n);for(int i=1;i<=n;i++){printf("%d ",a[i]);//输出最后胜出人的编号}return 0;
}

YTU 3921 游戏相关推荐

  1. [YTU]_2635(P4 游戏中的Human角色)

    题目描述 在一个平面打斗游戏中,任何的角色(Role)都有血量(blood)和位置loc(此处loc是Location类的实例)属性.有了Role类,可以派生出不同的角色,如人.神仙.怪兽等.如下程序 ...

  2. Java实验二猜数字游戏,JAVA-第2周实验-猜数字游戏

    JAVA--第2周实验--猜数字游戏 /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reser ...

  3. Swing贪吃蛇游戏(一):基本功能实现

    本文将提供一个Swing版本的贪吃蛇游戏,游戏包括最基本的功能: 1. 用Timer来管理贪吃蛇线程. 2. 实现按钮,键盘的事件响应. 3. 随机产生食物. 4. 游戏结束的判断:蛇头触碰到蛇身或者 ...

  4. 经典算法案例001-08:如何使用质数设计扫雷(Minesweeper)游戏

    扫雷(Minesweeper)游戏 1.扫雷(Minesweeper) 大家都熟悉Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,下表中红色的数字哪些是雷 ...

  5. 伍六七带你学算法 进阶篇-生命游戏

    有趣的算法题–生命游戏 难度-中等 根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机. 想要体验生命游戏的小伙伴可以到这里-->生命游戏 进入 ...

  6. 自制青蛙跳台阶小游戏~

    青蛙跳台阶小游戏 1.概念(concept)文档 楔子(Setting):千百年来,人们在贬低别人时,常用井底之蛙来描述那个人,但这却让青蛙不开心了,于是青蛙决定跳出井底,为自己讨一个公道. 玩法(G ...

  7. 用Construct 2制作入门小游戏~

    今天在软导课上了解到了Construct 2这个神器,本零基础菜鸟决定尝试做一个简单的小游戏(实际上是入门的教程啊= = 首先呢,肯定是到官网下载软件啊,点击我下载~ 等安装完毕后我便按照新手教程开始 ...

  8. Intel GPU实现游戏与数据中心

    Intel GPU实现游戏与数据中心 在Intel Architecture Day上,Intel谈到了面向游戏玩家的Xe-HPG架构Alchemist GPU以及面向数据中心的Xe-HPC架构GPU ...

  9. 英特尔 i5-9400F,或将成为本年最高性价比的游戏处理器

    英特尔 i5-9400F,或将成为本年最高性价比的游戏处理器 一直以来,每一代英特尔 i5 系列都是很多游戏玩家主要的选购对象,它和任何一款显卡似乎都能够很好的搭配起来.可凡事都有美中不足的地方,比如 ...

最新文章

  1. Windows 下连接mysql工具NavicatForMysql
  2. 【转】C#中的线程 入门
  3. 红帽企业版linux 7.4更新启动,红帽Linux企业版7.4 淘汰Btrfs文件系统
  4. 理解Lucene/Solr的缓存
  5. 微型计算机相关的英文文献,微型计算机控制系统--------外文文献翻译
  6. 第九集 生死穿越风火山,感受尘世间轮回
  7. 数仓主题表怎么设计_陶瓷企业展厅设计主题风格怎么确定?
  8. Egg框架入门教程合集之插件/工具/教程/专栏/开源项目
  9. oracle去除表中字段中特殊符号('tab','空格','换行符','回车')——目前没找到可以一次性替换表中所有异常数据的方法,只能对字段逐一去除,如果有还希望留言赐教
  10. 详解c++[指针的指针] 和 [指针的引用]
  11. android inflater 用法
  12. 浅谈 Run-Time Check Failure #2 - Stack around the variable 'xxx' was corrupted 的解决方法
  13. HanLP里使用DAT存取字典的方法
  14. C语言自己写代码实现的strcmp函数
  15. diy个人级超级计算机,八核+七卡!泡泡网DIY个人超级计算机
  16. hdu 5025 Saving Tang Monk(bfs+状态压缩)
  17. Python全年天数查询源代码
  18. 关于软件工程中的银弹
  19. 坦克大战(Tank Battalion)------Java代码实现
  20. Dell服务器网卡驱动升级[CentOS 5.5 X86_64和RHEL 5.6 X86_64]

热门文章

  1. 基因家族分析⑦:用MEME查询基因家族的motif
  2. 【天光学术】演讲稿:微笑面对生活
  3. PLSQL入门与精通(第72章:LOGOFF触发器)
  4. 用平面图片制作3D模型【3DsMax】
  5. 一梦江湖网页提交问题服务器错误,一梦江湖4月3日更新内容详情一览
  6. 微信吸粉实战二:腾讯新闻
  7. Python笔记 · Python语言的“动态性”
  8. 服务器微信发送图片困难是什么原因导致的,微信接受的图片不清楚的原因是什么?怎么发清楚?...
  9. 用苹果电脑开发Android应用,MAC OS Android Studio环境安装
  10. 点云深度学习系列博客(二): 点云配准网络PCRNet