LA 4727 Jump

来源:互联网 发布:飞控电子显示屏软件 编辑:程序博客网 时间:2024/06/06 18:15

题意: 给出约瑟夫环的n和k,求最后的三个人。

解法: Here解释蛮详细了,此处不赘述。

此题为ACM中不区分递推和dp的典例- -!

/* **********************************************Author      : NeroCreated Time: 2013-8-26 0:36:33Problem id  : LA 4727Problem Name: Jump*********************************************** *//*数学方法快速求Joseph的末三位。。。*/#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;#define REP(i,a,b) for(int i=(a); i<(int)(b); i++)#define clr(a,b) memset(a,b,sizeof(a))int n,k;int main() {    int cas;    scanf("%d", &cas);    while(cas--) {        scanf("%d%d", &n, &k);        int s;        s = (k-1) % 3;        for(int i = 4; i <= n; i ++) s = (s + k) % i;        printf("%d ", s+1);        s = (k-1) % 2;        for(int i = 3; i <= n; i ++) s = (s + k) % i;        printf("%d ", s+1);        s = 0;        for(int i = 2; i <= n; i ++) s = (s + k) % i;        printf("%d\n", s+1);    }    return 0;}