HDU6043 KazaQ's Socks【规律】

来源:互联网 发布:ubuntu 16.04改中文 编辑:程序博客网 时间:2024/06/04 18:02

题意:他有很多袜子,每天穿编号最小的(穿完不洗,放着),剩最后一双的时候把前面的都洗了。


思路:模拟一个,找规律,比如4双

放在一边    柜子里的(开头是今天要穿的)

                     1234

1                   234

12                 34

123               4

------------------------循环节,大小为2*(n - 1 )

4                   123

41                  23

412                3

3                    124

31                  24

312                4

------------------------


具体看代码

#include<stdio.h>#include<iostream>#include<string.h>#include<string>#include<stdlib.h>#include<math.h>#include<vector>#include<list>#include<map>#include<stack>#include<queue>#include<algorithm>#include<numeric>#include<functional>using namespace std; const int maxn = 105;long long n,k;int main(void){    int kase = 1;    while(scanf("%I64d%I64d",&n,&k)!=EOF)    {        if(k <= n)            printf("Case #%d: %I64d\n",kase++,k);        else        {            long long yu = (k-n) % (2*(n-1));            if(yu == 0)                yu = 2*(n-1);            if(yu == n-1)                printf("Case #%d: %I64d\n",kase++,n-1);            else if(yu == 2*(n-1))                printf("Case #%d: %I64d\n",kase++,n);            else                printf("Case #%d: %I64d\n",kase++,yu % (n-1));                            }    }    return 0;}


原创粉丝点击