【HDU 1443】Joseph

Joseph(题目链接)

思路

  • 直接暴力模拟
  • 为节省时间,可以事先打表

代码

#include <iostream>
using namespace std;

//存储k值所对应的m值,由于表中数据固定,所以事先打表 
int tab[15] = {0,2,7,5,30,169,441,1872,7632,1740,93313,459901,1358657,2504881,0};

//计算表中的数据函数 
void create(void){
    for(int k = 1; k < 14; k++){        //循环k,寻找k所对应的m值 
        for(int m = k/2 + k + 1;; m++){ //循环m,m的初值可以为k+1,加上k/2进一步优化 
            int sum = 2 * k;            //目前还存在的人数 
            int now = 0;                //当前要删除的人 
            for(int i = 0; i < k; i++){ //删除K次人 
                now += m;               //往后数m个人 
                now %= sum;             //数m个人时,循环 
                if(now == 0){           //如果当前的人是最后一个(模sum为0) 
                    now = sum;          //让now为最后一个人 
                }
                if(now > k){            //若为坏人 
                    now--;              //删除人后,当前位置也要减小 
                    sum--;              //删除人后,总人数减少 
                }
            } 
            if(sum == k){               //若删除k次人后,还剩k个(好)人 
                tab[k] = m;             //记录下k对应的m值 
                break;                  //跳出m的循环 
            }
        }
    }
}

int main(){

//为节约时间,事先打表,存在程序里 
//  create();                           //调用打表函数 
//  for(int i = 0; i < 15; i++){        //循环 
//      cout << tab[i] << endl;         //输出每一个k值 
//  }

    int k;                              //输入变量k 
    while(cin >> k && k){               //有输入,并且输入不为0 
        cout << tab[k] << endl;         //输出对应的m值 
    }
    
    return 0;
} 

总结

  • 最开始感觉直接模拟没意思,在网上看了下,基本都是直接模拟
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,855评论 25 708
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 14,370评论 2 59
  • 读聊斋,我推荐过司马少的翻译,好像微博上也推荐过李孝恺、李孝悌的翻译。 再推荐一个重度聊迷斋菜们不能错过的《聊斋志...
    觉史氏阅读 1,816评论 0 2
  • 题记:我相信生命,相信自己,相信尚未认识的你,我相信一切的美好!一一一莫西 初春,天阴阴的 雪,还没有到来 在这样...
    莫滴阅读 309评论 0 0
  • 《积分制的本质是价值观量化考核》 [水木豪庭」2018-12-20 “积分制”是落地“六大法宝”之一,在落地中具有...
    水木豪庭装饰阅读 705评论 0 0

友情链接更多精彩内容