版权声明:本文为小时的枫原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaofeng187/article/details/76084903
KazaQ's Socks
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 0 Accepted Submission(s): 0
Problem Description
KazaQ wears socks everyday.
At the beginning, he has n pairs of socks numbered from 1 to n in his closets.
Every morning, he puts on a pair of socks which has the smallest number in the closets.
Every evening, he puts this pair of socks in the basket. If there are n−1 pairs of socks in the basket now, lazy KazaQ has to wash them. These socks will be put in the closets again in tomorrow evening.
KazaQ would like to know which pair of socks he should wear on the k-th day.
At the beginning, he has n pairs of socks numbered from 1 to n in his closets.
Every morning, he puts on a pair of socks which has the smallest number in the closets.
Every evening, he puts this pair of socks in the basket. If there are n−1 pairs of socks in the basket now, lazy KazaQ has to wash them. These socks will be put in the closets again in tomorrow evening.
KazaQ would like to know which pair of socks he should wear on the k-th day.
Input
The input consists of multiple test cases. (about
2000)
For each case, there is a line contains two numbers n,k (2≤n≤109,1≤k≤1018).
For each case, there is a line contains two numbers n,k (2≤n≤109,1≤k≤1018).
Output
For each test case, output "
Case #x: y" in one line (without quotes), where
x indicates the case number starting from
1 and
y denotes the answer of corresponding case.
Sample Input
3 7 3 6 4 9
Sample Output
Case #1: 3 Case #2: 1 Case #3: 2
题意:n双袜子编号1到n,每天早上穿一双,要求是所有剩下袜子里数字最小的。
每天晚上换下来一双袜子放到篮子里,当篮子里的袜子数到大n-1 的时候,必须要洗所有袜子并,洗完的袜子在第二天晚上才能用
求第k天传编号几的袜子。
简单的规律题
分奇偶来讨论就好了
下面是ac代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<string>
#include<iostream>
using namespace std;
#define MID(x,y) ((x+y)>>1)
#define CLR(arr,val) memset(arr,val,sizeof(arr))
#define FAST_IO ios::sync_with_stdio(false);cin.tie(0);
const double PI = acos(-1.0);
const int INF = 0x3f3f3f3f;
const int N=2e5+7;
int main()
{
//freopen("f:/input.txt", "r", stdin);
__int64 n,k,t,x,w;
int c = 1;
while(scanf("%I64d%I64d",&n,&k)!=EOF) {
printf("Case #%d: ",c);
++c;
t=k-n;
if(t>0) {
x=t%(n-1);
w=t/(n-1);
if(x==0) {
if(w%2==0){
printf("%I64d\n",n);
}else{
printf("%I64d\n",n-1);
}
}else if(x<(n-1)){
printf("%I64d\n",x);
}
}else{
printf("%I64d\n",k);
}
}
}