喝醉的狱卒

在一所监狱里有一条长长的走廊,沿着走廊排列着n个牢房,编号为1到n。每个牢房有一个囚犯,而且牢房的门都是锁着的。

一天晚上,狱卒很无聊,于是他就玩起了一个人的游戏。第一轮,他喝了一口威士忌,然后沿着走廊,将所有牢房的门打开。第二轮,他又喝了一口威士忌,然后又沿着走廊,将所有编号为2的倍数的牢房锁上。第三轮,他再喝一口威士忌,再沿着走廊,视察所有编号为3的倍数的牢房,如果牢房是锁着的,他就把它打开;如果牢房是开着的,他就把它锁上。他如此玩了n轮后,喝下最后一口威士忌,醉倒了。

当他醉倒后,一些犯人发现他们的牢房开着而且狱卒已经无能为力,他们立刻逃跑了。

给出牢房的数目n,请你确认最多有可能有多少犯人逃出了监狱?

Input 仅一行,为一个正整数n,n<=10000。

Output 仅一行,一个整数,为最多逃跑的犯人数

解法一:

#include<iostream>
using namespace std;
int main()
{
    //1 代表打开 ;0代表关闭
    int a[10000],i,j,n,m=0;
    cin>>n;
    for(i=0;i<n;i++)
        a[i]=0; //开始牢房的们是关闭的
    for(j=1;j<=n;j++)//表示第几轮
    {
        for(i=j-1;i<n;i=i+j)//第几轮加几  所以这儿加j 相当于倍数
        a[i]=a[i]+1;
    }
    for(i=0;i<n;i++)
       if(a[i]%2!=0) //如果经过N轮之后 a[i]为奇数则此时是打开的(因为开始是关闭的)
          m=m+1;     //如果是偶数,说明牢门经过开关  正好是偶数次,此时为关闭。
    cout<<m<<endl;
 } 

解法二:

#include<iostream>
using namespace std;
 int main()
 {
     //1 代表打开 ;0代表关闭
     int value[10000];
     int n;
     cin>>n;
     for(int i=0;i<n;i++)
        value[i]=0;
       int k;
      for(int i=1;i<=n;i++)//轮次 从1开始
      {
         for(int j=1;j<=n;j++) //牢房编号
           if(j%i==0)//如果牢房编号正好整除轮次,开始操作 锁着的话打开,开着的话锁着
           {
                 if(value[j]==1)
                    value[j]=0;
                 else
                   value[j]=1;
           }
     }
     int m=0;
     for(int j=0;j<n;j++)
      {
        if(value[j]==1)//然后统计元素为1的个数
          m++;
     }
     cout<<m<<endl;
     return 0;
  } 
时间: 2024-10-30 13:53:26

喝醉的狱卒的相关文章

poj-1218 THE DRUNK JAILER 喝醉的狱卒

自己去看看原题; 题目大意: 就是一个狱卒喝醉了,他第一趟吧所有的监狱都带开,第二趟把能把二整除的监狱关闭,第三趟操作能把三整除的监狱; 求最后能逃跑的罪犯数 输入第一个数是代表 测试数据组数 每个数据代表狱卒来回的次数 当作开关问题即可 #include<iostream> using namespace std; int main() { int n; cin>>n; while(n--) { int a; int aa[120]={1}; cin>>a; int

酒驾太可怕 男子喝醉骑电动车撞墙身亡

相信大家对酒驾都不陌生,喝酒太误事并且现在酒驾的查处越来越严格,所以很多车主只要喝酒一般就不会开车.但现在电动车的管理还不严格,喝酒过后骑电动车再寻常不过.但最近在南京发生的一件奇葩事故让很多人看到,酒驾不仅针对开机动车的车主,骑电动车的也要注意酒驾的危害.开新在这里提醒广大车主开车骑车一定要注意人身安全,喝酒之后一定不能再去开车骑车了. 11月9号下午,南京一条街道上一男子酒后骑电动车回家时,不慎撞上路边民房,该男子当场身亡.该死者已经被急救人员抬上120救护车送往南京六合人民医院.医生告诉交

bzoj3898: 打的士

Description 酒足饭饱之后. 一帮人都喝醉了. 嘛,由于酒驾查的很严格,所以说接下来就是送客人回家的难题了. 嘛,接下来就是操蛋的设定. 小T把喝醉的人分成了好多组,每一组要用一部车把他们送回家睡大觉. 然后呢,每一组可以租用的车子也是不一样的,具体而言,对于第i组,有T[i]种的车子(型号可能相同)来把他们送回去.当然咯,小T只需要安排一辆车子就可以送走这一组所有的人了.由于囊中羞射,小T一定只会每组安排一辆车. 更具体的,送回家的费用,是所有租用的车子里面,型号最大的和型号最小的车

TCP之Delay ACK在Linux和Windows上实现的异同-Linux的自适应ACK

关于TCP Delay ACK的概念我就不多说了,到处复制粘贴标准文献以及别人的文章只能让本文篇幅加长而降低被阅读完的欲望,再者这也不是什么论文,附录参考文献几乎很少有人去看,所以我把这些都略过了. 和风吹的干皮鞋,吹的断愁绪吗? 写完本文后的补充: 这段话是我写完本文后补上去的.本来我想把这篇文章控制在2000字以内,或者更少的,800-1000字以内,无奈还是说多了...今天心情非常好,因为我竟然在梦里把三亨利之战的细节搞清楚了,迄今,我觉得自己对于西洋史的认知更近了一步,可以说今天是一个里

什么叫有所在的生活呢

法国有一个学者写过一本书,叫做<无所在的故事>.他把人的生活状态分为两种,一种是"有所在",一种是"无所在". 什么叫有所在的生活呢?他的描述是这样,就是你生活在一个固定的程序里面,比如说你每天从家走向单位,从单位走向菜场,然后从菜场走回你家的厨房.你的一生沿着这样一个固定的道路,重复着,偶尔有一点点意外. 那还有一种人生呢,叫无所在的状态.就是当你踏出家门的那一刻,你就不知道明天你在哪里,你不知道接下来会发生什么故事.你在每一个码头.车站,甚至每一个大

9个最有趣的代码注释

1.原先我还知道我在写什么,但是现在,只有上帝知道了. 这条注释是优秀数学家Karl Weierstrass写的.我唯一想问的是,他前后指的是不是同一个数学难题.如果是,那又是为什么,我真的非常想知道. 2.谨将我的所有代码所有工作献给我的妻子Darlene,因为她养育了我和我们的三个孩子,以及会一条人来疯的狗. 好吧,为这家伙的幽默感点个赞!即使不是幽默感发作,那也勇气可嘉.无论如何,读到这里,我感动得热泪盈眶. 3.等我喝醉了再来修复. 我之所以钦点这一条,是因为我特别想知道这家伙喝醉了以后

我最喜欢的武侠电影

"江湖"--"情怀" 年少几何时, 背着比自己还重的矿灯, 跑遍十里八村的看电影, 记忆中的-- 江湖! 属于那些忘不掉的 角色! 好一个"天龙八音" 迷恋那让人眼花缭乱的手法和琴弦 打动我的是那把特别的神器. 江湖险恶,神功无敌! 复仇,父仇 半把刀,半本秘笈! 每人心里都有把刀! 残缺的高手, 绝世的刀法. 天降大任, 必先苦其心,饿其体,困乏其身! 嬉笑声中成就"奉旨乞讨" 乞丐中的霸主, 还是乞丐! 呵呵-- 亡国公主

IT痴汉的工作现状35-不要让你擅长的技术限制了你

有一种人就像伟仔这样,以为自己从事移动开发工作,其他领域的技术就与己无关了.总是一副自己很忙的样子-我才懒得关注其他技术呢,Android开发自己都没精通哪有时间看别的? 现在看来,这样的做法真是有百害而无一利啊.老话常说技不压身,自己会的越多就越有竞争力.好吧,我好像又把话题拉到了技术的广度与深度上了,但是如果从不同的出发点去谈论这个话题,那么结果就会不同. 我先抛出一个场景,然后基于这个场景来谈论技术的广度与深度的问题就不会跑偏,然后我会尽量去扣今天的主题:不要让你擅长的技术限制了你. 这个

我到底想要什么

我,想要一个什么样的工作. 我似乎已经厌倦了不停地帮别人做网站,一个接一个,似乎没有尽头,从baolabs,到mgm,到coopong到chivas,还有即将到来的kerrygold,这些网站一个接一个,看他们就像看自己的孩子,一个个变得越来越优秀,却一个个被抛弃. baolabs是个老实的孩子,他不像其他弟弟那样顽皮,个头大,显得有些呆笨,被奶妈喂养过几天,后来长大了竟会被人说和奶妈长得很像:mgm是个小个子,他就像顽皮的孩子一样,也会哭也会闹,最后被人领养了,但始终也改变不了当初的模样:co