KazaQ's Socks

来源:互联网 发布:知乎电子书 编辑:程序博客网 时间:2024/06/11 10:59

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.

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)
.
Output

For each test case, output ” Case #x: y
” in one line (without quotes), where x indicates the case number starting from 1and 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,1~n-1,1~n-2,n….(后面是1~n-1跟1~n-2,n的交替)。

AC代码如下:

#include<iostream>#include<cstdio>using namespace std;int main(){    int n;    long long k;    int count=0;    while(cin>>n>>k)    //while(scanf("%d%ll",&n,&k)!=EOF)    {        count++;        if(k<=n)        {            cout<<"Case #"<<count<<": "<<k<<endl;        }        else         {            if((k-n)%(n-1)!=0)                cout<<"Case #"<<count<<": "<<(k-n)%(n-1)<<endl;            else{                if((k-n)/(n-1)%2==0)                {                    cout<<"Case #"<<count<<": "<<n<<endl;                }                else                    {                        cout<<"Case #"<<count<<": "<<n-1<<endl;                    }                }        }    }    return 0; }
原创粉丝点击