题目链接:KazaQ’s Socks
题目大意:有n双袜子在一个衣柜,每天要把这n双袜子放在另一个衣柜(我们叫他衣橱)每次从衣柜里面拿出来的袜子都是拿的衣柜里面剩余袜子的最小编号,如果衣橱里面有n-1双袜子了,我们在放第n双袜子之前需要把这n-1双袜子重新放在衣柜里面再把第n双袜子放在衣橱里面,问第k天从衣柜里拿出的袜子的编号
题目思路:模拟一下就好了,比如有四双袜子,那么可以发现衣柜里面拿出的编号是:1 2 3 4 | 1 2 3 | 1 2 4 | 1 2 3 | 1 2 4,所以我们就发现了规律,然后直接做就好了
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <iostream>
using namespace std;
typedef long long ll;
int main(){
ll n,k,t = 0;
while(~scanf("%lld%lld",&n,&k)){
printf("Case #%lld: ",++t);
if(k <= n) printf("%lld\n",k);
else{
k-=n;
ll cot1 = k%(n-1);
ll cot2 = k/(n-1);
if(cot1 != 0) cot2++;
if(cot2&1){
if(cot1 == 0) printf("%lld\n",n-1);
else printf("%lld\n",cot1);
}
else{
if(cot1 == 0) printf("%lld\n",n);
else printf("%lld\n",cot1);
}
}
}
return 0;
}