zoukankan      html  css  js  c++  java
  • 猴子选大王

    今天我们要写的是“猴子选大王”,一道经典到不能再经典的C++编程题。

    有 n 只猴子围成一圈,从 1 - n 编号,大家决定从中选出一个大王。经过协商,决定选大王的规则为:从编号为1的猴子开始报数,报到 k 的猴子出圈,然后再从下一只开始继续报 1 到 k ……,最后剩下来的那一只就是大王。要求编程从键盘输入 n、k ,输出成为大王的猴子编号。

    【输入】

    一行两个正整数 n 和 k 

    【输出】

    一行一个正整数,代表猴王的编号

    【样例输入】

    3 2

    【样例输出】

    3

    题解:

    一般人的代码:

    #include <stdio.h>
    int main()
    {
        int N;
        int a[1000];
        scanf("%d", &N);
        int count = 0, number = N;
        for (int i = 0; i < N; i++)
            a[i] = i + 1;
        while (number > 1)
        {
            for (int i = 0; i < N; i++)
            {
                if (a[i] == 0)
                    continue;
                count++;
                if (count == 3)
                {
                    a[i] = 0;
                    count = 0;
                    number--;
                }
            }
        }
        for (int i = 0; i < N; i++)
            if (a[i] != 0)
                printf("%d", a[i]);
     
        return 0;
    }

    高手的代码(多想一会)

    #include<iostream>
    using namespace std;
    int main()
    {
        int n,m,k,r,q;
        cin>>n>>k;
        m=n*k;
        while(n>m)
        {
            r=(m-n)%(k-1)l
            if(r==0)
                r=k-1;
            q=(m-n-r)/(k-1);
            m=k*q+r;
        }
        cout<<m;
        return 0;    
    }

    大佬的代码(就是我)

    #include<iostream>
    using namespace std;
    int main()
    {
        int n,k;
        cin>>n>>k;
        int i,ans=0;
        for(i=2;i<=n;i++)
            ans=(ans+k)%i;
        cout<<ans+1;
        return 0;
    }

    有图有真相(注意代码长度)

  • 相关阅读:
    ASP.NET 2.0 中的新增服务、控件与功能概述作者:Jeff Prosise
    js学习笔记(二)
    js学习笔记(四)表达式和运算符
    js技巧1(判断浏览器)
    css点滴
    after effect 学习笔记(一)
    js学习笔记(六)函数
    js学习笔记(八)数组
    js学习笔记(三)变量
    js学习笔记(一)
  • 原文地址:https://www.cnblogs.com/jiaweigao/p/9821764.html
Copyright © 2011-2022 走看看