zoukankan      html  css  js  c++  java
  • 约瑟夫问题模板

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<vector>
     4 #include<cstring>
     5 #include<cstdio>
     6 using namespace std;
     7 #define mem(s,n) memset(s,n,sizeof s);
     8 #define ios {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); }
     9 typedef long long ll;
    10 const int maxn=5e6+1;
    11 const int Inf=0x7f7f7f7f;
    12 ll n,k;
    13 ll Josephus(ll n,ll k){
    14     if(n==1)    return 0;
    15     else if(n<k){
    16         ll ans=0;
    17         for(int i=2;i<=n;i++)
    18             ans=(ans+k)%i;
    19         return ans;
    20     }
    21     ll ans=Josephus(n-n/k,k);
    22     if(ans<n%k)    ans=ans-n%k+n;
    23     else    ans=ans-n%k+(ans-n%k)/(k-1);
    24     return ans; 
    25 }
    26 
    27 int main()
    28 {   
    29     int t;
    30     scanf("%d",&t);
    31     while(t--)
    32     {
    33         scanf("%lld%lld",&n,&k);
    34         // 简便写法;
    35         ll i=1,ans=0,p;
    36         while(i<n)
    37         {
    38             p=(i-ans)/(k-1)+((i-ans)%(k-1)!=0);
    39             if(i+p>n) p=n-i;
    40             ans+=p*k;
    41             i+=p;
    42             ans%=i;
    43         }
    44         // 
    45         cout<<Josephus(n,k)<<endl;
    46     }
    47     return 0;
    48 }
  • 相关阅读:
    DHCP DHCPv6
    DHCPv6协议
    IPv6邻居发现协议
    CentOS下禁止防火墙
    centOS下更新yum源
    centOS下yum报错
    Flink+Kafka整合的实例
    Flink基本概念
    Ubuntu16.04下配置ssh免密登录
    Zookeeper+Kafka的单节点配置
  • 原文地址:https://www.cnblogs.com/zpj61/p/13457611.html
Copyright © 2011-2022 走看看