2018 ACM-ICPC 沈阳站 Problem K. Let the Flames Begin 具体数学

xiaoxiao2025-10-08  22

#include<bits/stdc++.h> using namespace std; typedef long long ll; ll f(ll n,ll m,ll k) { if(m*k<=n) return m*k; if(k>n) return (f(n-1,m-1,k)+(k-1)%n)%n+1; ll tp=f(n-n/k,m-n/k,k); if(tp<=n%k) return n/k*k+tp; else return ((tp-n%k-1)/(k-1)+tp+n/k*k-1)%n+1; } int main() { ll n,m,k,t,cas=0; scanf("%lld",&t); while(t--&&scanf("%lld%lld%lld",&n,&m,&k)!=EOF) printf("Case #%lld: %lld\n",++cas,f(n,m,k)); return 0; }

 

转载请注明原文地址: https://www.6miu.com/read-5037562.html

最新回复(0)