HDU 5643 King's Game | 约瑟夫环变形

Posted kimsimple

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 5643 King's Game | 约瑟夫环变形相关的知识,希望对你有一定的参考价值。

 

 

经典约瑟夫环

1 int f[N] ={ 0 };
2 for(int i=2; i<=n; i++)
3 {
4         f[i] = (f[i-1] + k) % i;
5 }   

变形:k是变化的

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <stdlib.h>
#include <queue>
#include <map>
 
using namespace std;
 
typedef long long LL;
 
#define met(a, b) memset(a, b, sizeof(a))
#define INF 0x3f3f3f3f
#define N 5210
 
int main()
{
    int T, n, f[N] = { 0 };
     
    scanf("%d", &T);
     
    while(T--)
    {
        scanf("%d", &n);
         
        int k = n-1;
         
        for(int i=2; i<=n; i++)
        {
            f[i] = (f[i-1] + k) % i;
             
            k --;
        }
        printf("%d\n", f[n] + 1);
    }
    return 0;
}

 

以上是关于HDU 5643 King's Game | 约瑟夫环变形的主要内容,如果未能解决你的问题,请参考以下文章

HDU 5643 King's Game | 约瑟夫环变形

hdu5643, 递归求解约瑟夫环问题

hdu 5640 King's Cake(模拟)

hdu-5641 King's Phone (水题)

hdu-5642 King's Order(数位dp)

hdu 5642 King's Order(数位dp)