题意:他有很多袜子,每天穿编号最小的(穿完不洗,放着),剩最后一双的时候把前面的都洗了。
思路:模拟一个,找规律,比如4双
放在一边 柜子里的(开头是今天要穿的)
1234
1 234
12 34
123 4
------------------------循环节,大小为2*(n - 1 )
4 123
41 23
412 3
3 124
31 24
312 4
------------------------
具体看代码
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<string>
#include<stdlib.h>
#include<math.h>
#include<vector>
#include<list>
#include<map>
#include<stack>
#include<queue>
#include<algorithm>
#include<numeric>
#include<functional>
using namespace std;
const int maxn = 105;
long long n,k;
int main(void)
{
int kase = 1;
while(scanf("%I64d%I64d",&n,&k)!=EOF)
{
if(k <= n)
printf("Case #%d: %I64d\n",kase++,k);
else
{
long long yu = (k-n) % (2*(n-1));
if(yu == 0)
yu = 2*(n-1);
if(yu == n-1)
printf("Case #%d: %I64d\n",kase++,n-1);
else if(yu == 2*(n-1))
printf("Case #%d: %I64d\n",kase++,n);
else
printf("Case #%d: %I64d\n",kase++,yu % (n-1));
}
}
return 0;
}