(数学)HDU 6043 KazaQ's Socks
2017-07-30 22:30
417 查看
HDU-2017 多校训练赛1-1011-KazaQ’s Socks
题目网址: HDU 6043 KazaQ’s Socks
当他穿过 n-1对袜子时, 他会将 穿的袜子拿去洗
问当第k天的时候 他穿哪对袜子
根据上述序列, 找出规律
可知当 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)
题目网址: 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; }
相关文章推荐
- HDU 6043(2017 多校训练赛1 1011) KazaQ's Socks
- HDU 6043 KazaQ's Socks
- 2017 Multi-University Training Contest - Team 1:KazaQ's Socks(hdu 6043)
- HDU 6043(KazaQ's Socks) 规律题 Java
- HDU 6043 KazaQ's Socks - 2017多校联盟1 第11题 -规律
- HDU 6043 KazaQ's Socks 找规律
- 【HDU】6043 - KazaQ's Socks(思维)
- HDU 6043 KazaQ's Socks 【规律】
- 【多校训练】hdu 6043 KazaQ's Socks
- 2017 Multi-University Training Contest - Team 1 1011&&HDU 6043 KazaQ's Socks【规律题,数学,水】
- HDU 6043 KazaQ's Socks(周期)
- HDU 6043 KazaQ's Socks(水~)
- HDU 6043 KazaQ's Socks【规律】
- HDU 6043 KazaQ's Socks
- 2017杭电多校联赛 1011 KazaQ's Socks(找规律)HDU 6043
- 17 多校 - 1 - 1011 - KazaQ's Socks (HDU 6043)
- HDU 6043 KazaQ's Socks(暑期训练1011)
- 17暑假多校联赛1.11 HDU 6043 KazaQ's Socks
- hdu 6043 KazaQ's Socks 模拟
- HDU 6043 - KazaQ's Socks | 2017 Multi-University Training Contest 1