题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6043
题意:有一个人,有n双袜子(袜子编号从1到n),他必须凑齐n-1双袜子,才会去洗,他每天早上会穿没有穿过的编号最小的袜子,每天晚上会把袜子丢进脸盆里,如果脸盆里有n-1双袜子,他就洗了这些,现在问你他第k天,穿的袜子编号是几
解析:就单从题目描述来讲,肯定是有规律,而且数据规模也这样暗示了,所以老老实实找循环节就好,结果发现,前n天的编号一定是1~n的顺序的,后面就变成了,每n-1天为一组,前n-2项的顺序一定是1~n-2,第n-1项是编号n和n-1交替出现
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(void)
{
ll n,k;
int case_t = 1;
while(~scanf("%I64d %I64d",&n,&k))
{
printf("Case #%d: ",case_t++);
if(k<=n)
printf("%I64d\n",k);
else
{
k-=n;
ll t1 = k%(n-1),t2 = k/(n-1);
if(t1!=0)
printf("%I64d\n",t1);
else if(t2%2)
printf("%I64d\n",n-1);
else
printf("%I64d\n",n);
}
}
return 0;
}