Lmelting 2021-12-11 11:04 采纳率: 50%
浏览 26
已结题

将所有人从1编号,第一个人从1报数,每次数到m的人被杀,后面的人再从1报数,依此循环,直到剩下一人。已知最后一人的编号k,求至少有多少人

img

谢谢您!
我的程序是正确的,但是在提交网页时超时了,我想知道怎么可以减少循环或者有另一种思路吗?


#include<iostream>
using namespace std;
int cir(int n,int m)
{
    int p=0;
    for(int i=2;i<=n;i++)
    {
        p=(p+m)%i;
    }
    return p+1;
}
int main()
{
    int m1,k;
    int s=0;
    cin>>m1>>k;
    for(int j=1;;j++)
    {
        s=cir(j,m1);
        if(s==k)
        {
            cout<<j<<endl;
            break;
        }
    }
    return 0;
}
  • 写回答

1条回答 默认 最新

  • 技术专家团-Bamboo 2021-12-11 11:15
    关注

    char ch;
    cin>>m1>>ch>>k;
    输入有个逗号要处理一下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月20日
  • 已采纳回答 12月12日
  • 创建了问题 12月11日

悬赏问题

  • ¥15 vue使用gojs,需求在link中的虚线上添加方向箭头
  • ¥15 CSS通配符清除内外边距为什么可以覆盖默认样式?
  • ¥15 SPSS分类模型实训题步骤
  • ¥15 求解决扩散模型代码问题
  • ¥15 工创大赛太阳能电动车项目零基础要学什么
  • ¥20 limma多组间分析最终p值只有一个
  • ¥15 nopCommerce开发问题
  • ¥15 torch.multiprocessing.spawn.ProcessExitedException: process 1 terminated with signal SIGKILL
  • ¥15 QuartusⅡ15.0编译项目后,output_files中的.jdi、.sld、.sof不更新怎么解决
  • ¥15 pycharm输出和导师的一样,但是标红