ACM刷题之hdu————KazaQ's Socks

版权声明:本文为小时的枫原创文章,未经博主允许不得转载。 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  n1 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  (2n109,1k1018).
 

Output
For each test case, output " Case #xy" 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);
		}
		
	}
}


猜你喜欢

转载自blog.csdn.net/xiaofeng187/article/details/76084903
今日推荐