【HDU 2211】【水题】杀人游戏

来源:互联网 发布:MAC玩网游 编辑:程序博客网 时间:2024/06/06 08:39

以前做过的,直接水,类似学校PTA上的猴子选大王哈哈哈哈  解释如下。

/*每次杀人之后,土匪的编号都是会改变的。这个算法的思想就是使用「函数的递归调用」来模拟最后一个被杀的人在每次杀人结束后的位置,而不是像 算法一 一样的详细模拟每个人的状态。虽然最后被取出来的人在每一次中的位置不一样,但是前一次与后一次之间存在关系。题目所给例子「最后被杀的是 10」1 2 3 4 5 6 7 8 9 10 <----位置----> 101 2 4 5 7 8 10 <----位置----> 71 2 5 7 10 <----位置----> 51 2 7 10 <----位置----> 41 2 10 <----位置----> 3通过函数的递归调用由后一次得到前一次的位置,即只需要加上前一次 10 左边被杀掉的人数就行。假设 a 为前一次 1 到 最后一个被杀的人之间活着的人数,m 为 后一次的人数。*/


#include "stdio.h"//以前都是采用数组模拟,这次目测数据过大,绝壁无法用数组去模拟,无法模拟怎么办!!找规律!!//其实因为这题做过,影响深刻啊啊啊啊啊才知道找规律。  int ans(int n,int m){if(n==m)    {    return m;    }    else    {    n=ans(n-n/m,m);    return (n-1)/(m-1)+n;//妈蛋 直接写进去居然TLE,目测多做了一倍无用的运算啊。    }}int main(int argc, char const *argv[]){    int t;    scanf("%d", &t);    while (t--)    {        int n,m;        scanf("%d%d", &n,&m);        printf("%d\n",ans(n,m));    }    return 0;}


0 0
原创粉丝点击