zoukankan      html  css  js  c++  java
  • BNUOJ Eeny Meeny Moo

    Eeny Meeny Moo

    Time Limit: 1000ms
    Memory Limit: 65535KB           
            
    大家都有这种经验,当太多的人同时使用互联网的时候,网络会变得非常,非常缓慢。为了结决这一问题,北师大制定了一项应急计划,在网络使用高峰期切断一些连接以保证网络的畅通。所有的网络连接都将被标号(从1开始,依次是2号,3号……)。当应急计划启动的时候,首先切断1号连接,然后切断1号之后的第M个连接,在然后是上一个被切断之后的第M个连接,以此类推。例如,如果有17个连接,并且M=5,则依次切断的顺序为[1,6,11,16,5,12,2,9,17,10,4,15,14,3,8,13,7]。DXY同学大公无私地将自己的机器设置为1连接,而ZSL同学的机器为2号连接。原本这种切断连接的方式是很公平的,不过ZSL同学想要知道当M为多少时,他的机器会被最后一个切断连接(他果然很不厚道)。                
     

    Input

    输入不止一行,每一行都只有一个无符号整数N,且 3 <= n < 150。当输入0的时候程序退出。                
     

    Output

    对于每一行的输入,输出一个最小的值M,满足ZSL同学的2号连接会被最后一个切断。                
     

    Sample Input

    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    0

    Sample Output

    2
    5
    2
    4
    3
    11
    2
    3
    8
    16

    • //第一个人总是最先被删除的。因此可以把该问题看成是n-1个人的问题,  
    • //希望最后问题中最原始的2留下来,找这个递增的m  
    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    
    int call(int n,int m)
    {
        int i,s=0;
        for(i=2;i<=n-1;i++)
        {
            s=(s+m)%i;
    //如果s从1开始,则(s+m-1)%i+1  
    }
    return s; } int main() { int n,i; while(scanf("%d",&n),n) { if(n==0) break; for(i=1;;i++) { if(call(n,i)==0) {
    //编号为1的城市已经出列,所以第二座城市现在编号为1,但递推式的第一个值为0  
    printf(
    "%d ",i); break; } } } return 0; }

    这题还是不懂啊    啊     啊   。。。。。

  • 相关阅读:
    uni-app 发起请求,Toast 消息提示 ,跳转页面
    uView初识
    uni-app初识
    docker目录 /var/lib/docker/containers 日志清理
    Linux中使用pigz工具更快的压缩和解压文件
    docker 修改默认网段
    LayaAir提示:版本不匹配!全局tsc(2.7.2)!=VS Code的语言服务(2.1.5)。可能出现不一致的编译错误
    C++ 格式化 浮点为字符串
    安装 ta-lib
    编译 python 代码
  • 原文地址:https://www.cnblogs.com/linliu/p/4466126.html
Copyright © 2011-2022 走看看