题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6043
题意
主角有n双袜子,他需要在所有袜子穿完的前一天将之前的袜子洗了再穿,问你在第k天他穿的是第几双袜子
解:
思维题,在草稿上推推就知道是一个循环节的题,之后找个循环节就行了,需要特判一下只有两双袜子的情况。
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
int main()
{
int n;
long long k;
int cas=0;
while(scanf("%d%lld",&n,&k)!=-1)
{
printf("Case #%d: ",++cas);
if(k<=(n-1))printf("%lld\n",k);
else if(n==2)
{
int tmp=k%2;
if(tmp==1)printf("1\n");
else
printf("2\n");
}
else
{
int tmp=(k-(n-1))/(n-1);
int mdd=(k-(n-1))%(n-1);
if(tmp%2==1)
{
if(mdd==1)
printf("%d\n",n-1);
else if(mdd==0)
printf("%d\n",n-2);
else
printf("%d\n",mdd-1);
}
else
{
if(mdd==1)
printf("%d\n",n);
else if(mdd==0)
printf("%d\n",n-2);
else
printf("%d\n",mdd-1);
}
}
}
return 0;
}