您的位置:首页 > 其它

(数学)HDU 6043 KazaQ's Socks

2017-07-30 22:30 417 查看
HDU-2017 多校训练赛1-1011-KazaQ’s Socks

题目网址: HDU 6043 KazaQ’s Socks

题意分析:

题意

KazaQ 有 n对袜子, 每天他会选择序号最小的袜子来穿

当他穿过 n-1对袜子时, 他会将 穿的袜子拿去洗

问当第k天的时候 他穿哪对袜子

思路

当4对袜子时, 穿的袜子序列 如下, 1 2 3 4 1 2 3 1 2 4 1 2 3 1 2 4 ….

根据上述序列, 找出规律

可知当 k 小于等于n时, 可知第k天穿第k对袜子

当k大于等于n时,序列的周期为T = (n-1)*2

而循环的序列由 n 1 2 3 … n-1 1 2 3 … n-2 组成

所以当k%=T, 若k == 0, 则结果为 n

若k<= n-1 结果为 k

其余情况,结果为 k-(n-1)

代码:

#include <iostream>
#include <cstring>

using namespace std;

int main(int argc, char const *argv[])
{
long long n, k;
int cnt = 1;
while (~scanf("%I64d %I64d", &n, &k))
{
printf("Case #%d: ", cnt++);

long long T = (n-1) * 2;

if(k <= n)
{
printf("%I64d\n", k);
}
else
{
k -= n;
k %= T;
if(k == 0) printf("%I64d\n", n);
else if(k <= n-1)
{
printf("%I64d\n", k);
}
else
{
k -= n-1;
printf("%I64d\n", k);
}
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息