UVA 1452 Jump(約瑟夫環變形)
阿新 • • 發佈:2019-01-23
當i=2時,可以求出第二死的,當i=3時,可以求出第三死的,那麼只要像第一死的一樣遞推下去就可以了。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define rep(i,a,b) for(int i=(a);i<=(b);i++) #define ss(x) scanf("%d",&x) int main() { int t; ss(t); while(t--) { int n,k; ss(n);ss(k); int ans1=0,ans2=0,ans3=0; rep(i,2,n){ ans1=(ans1+k)%i; if(i==2){ ans2=1-ans1; } else if(i==3){ ans2=(ans2+k)%i; ans3=3-ans1-ans2; } else{ ans2=(ans2+k)%i; ans3=(ans3+k)%i; } } printf("%d %d %d\n",ans3+1,ans2+1,ans1+1); } return 0; }