HDU 6043 KazaQ's Socks

来源:互联网 发布:河南统计网络直报平台 编辑:程序博客网 时间:2024/05/19 20:49

KazaQ's Socks



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 thek-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 #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 73 64 9
 

Sample Output
Case #1: 3Case #2: 1Case #3: 2
 
这道题直接推出规律直接写就好了。规律是刚开始的n个是顺序的,然后开始1到n-1,1到n-2和n,这样循环。
例如 当n=5 时,规律为12345—1234—1235—1234—1235........这样不断循环。


AC代码:


#include<iostream>#include<algorithm>#include<cstring>#include<cmath>#include<cstdio>using namespace std;int a[11111];int main(){    int cas=0;    long long int n,k;    long long int cmp,res;    while(cin>>n>>k)    {        cas++;        cmp=2*(n-1);        res=(k-n)%cmp;        if(n>=k)            printf("Case #%d: %d\n",cas,k);        else if(res==0)            printf("Case #%d: %d\n",cas,n);        else if(res<=cmp/2)            printf("Case #%d: %d\n",cas,res);        else            printf("Case #%d: %d\n",cas,res-cmp/2);    }    return 0;}


原创粉丝点击