KazaQ's Socks

来源:互联网 发布:手机查看淘宝注册时间 编辑:程序博客网 时间:2024/06/05 01:10

题目链接

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 denotes the answer of corresponding case.
 

Sample Input
3 73 64 9
 

Sample Output
Case #1: 3Case #2: 1Case #3: 2
 

Statistic | Submit | Clarifications | Back

题目大意:
有编号为1~n的n双袜子,每天早上选编号最小的穿,穿完晚上扔到篮子里,如果现在篮子里有n-1双袜子,明天晚上洗完再次放在衣橱里。问:第k天穿的袜子编号多少?

思路:
找规律,把样例写写就出来了。
n=3, k=7
(1234) (123 124) (123 124) ……
1~n 为单独的一段,剩下的部分存在长度为2n-2的循环节,此循环节分两部分,第一部分 1~n-1 ,第二部分 1~n-2、n;

ac代码

#include<stdio.h>#define ull unsigned long longint main(){    int n;    ull k;    int cas=0;    while(~scanf("%d%llu",&n,&k))        {            if(k<=n) printf("Case #%d: %d\n",++cas,k);            else                {                    k-=n;//减去第一段                    k%=(2*n-2);//判断k落在哪块                    if(!k) printf("Case #%d: %d\n",++cas,n);                    //循环的最后一个数,因为取模后为0,所以需要特殊处理                    else if(k<=n-1) printf("Case #%d: %d\n",++cas,k);                    else printf("Case #%d: %d\n",++cas,k-n+1);                }        }    return 0;}
原创粉丝点击