hdu6043 KazaQ's Socks

来源:互联网 发布:system01.dbf数据大 编辑:程序博客网 时间:2024/05/16 08:08

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6043
题意:有一个人,有n双袜子(袜子编号从1到n),他必须凑齐n-1双袜子,才会去洗,他每天早上会穿没有穿过的编号最小的袜子,每天晚上会把袜子丢进脸盆里,如果脸盆里有n-1双袜子,他就洗了这些,现在问你他第k天,穿的袜子编号是几
解析:就单从题目描述来讲,肯定是有规律,而且数据规模也这样暗示了,所以老老实实找循环节就好,结果发现,前n天的编号一定是1~n的顺序的,后面就变成了,每n-1天为一组,前n-2项的顺序一定是1~n-2,第n-1项是编号n和n-1交替出现

#include <bits/stdc++.h>using namespace std;typedef long long ll;int main(void){    ll n,k;    int case_t = 1;    while(~scanf("%I64d %I64d",&n,&k))    {        printf("Case #%d: ",case_t++);        if(k<=n)            printf("%I64d\n",k);        else        {            k-=n;            ll t1 = k%(n-1),t2 = k/(n-1);            if(t1!=0)                printf("%I64d\n",t1);            else if(t2%2)                printf("%I64d\n",n-1);            else                printf("%I64d\n",n);        }    }    return 0;}