HDU 6043(KazaQ's Socks) 规律题 Java
2017-07-25 18:56
316 查看
2017 Multi-University Training Contest - Team 1 1011题
找规律,分情况!!!
找规律,分情况!!!
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.math.BigInteger; import java.util.Scanner; /** * 题意:有 numOfSocks 双袜子序号分别为 1~numOfSocks,每天早上穿序号最小的那双,每天晚上放到篮子里, * 当穿最后一双袜子的时候,会洗篮子里面的袜子(当天就干),问第 day 天穿的哪双袜子。 * * 分析:找规律。 * 比如,输入的用例:3 7 * 每天穿的袜子编号:1 2 3 1 2 1 3 1 2 1 3 * 其中发现:1 2 3 之后的都是 1 2 、 1 3 , 也就是说在穿第 2/3 双袜子的那一天才洗袜子。 * 又比如: 4 9 * 每天穿的袜子编号: 1 2 3 4 1 2 3 1 2 4 1 2 3 * 其中又发现:1 2 3 4 之后的都是 1 2 3 、 1 2 4,也就是说在穿第 3/4 双袜子的那一天才洗袜子。 * 也就能说明了只有在穿第 numOfSocks/numOfSocks-1 双袜子的那一天,才洗袜子。 * 更进一步说明:numOfSocks 和 numOfSocks-1 是轮流来的。 * * 解决: * 1、当 day <= numOfSocks 时,直接输出 day * 2、当 day > numOfSocks 时,分以下两种情况: * ①、当 (day-numOfSocks) % (numOfSocks-1) == 0 时, * i、(day-numOfSocks)/(numOfSocks-1) == 偶数时,输出 numOfSocks * ii、(day-numOfSocks)/(numOfSocks-1) == 奇数时,输出 numOfSocks-1 * ②、否则输出 (day-numOfSocks) % (numOfSocks-1). * * @author TinyDolphin * */ public class Main { public static void main(String[] args) throws IOException { Scanner in = new Scanner(new BufferedReader(new InputStreamReader(System.in))); PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out))); BigInteger numOfSocks; BigInteger day; int count = 0; while (in.hasNext()) { numOfSocks = in.nextBigInteger(); day = in.nextBigInteger(); out.print("Case #" + (++count) + ": "); if (day.compareTo(numOfSocks) <= 0) { out.println(day); } else { if ((day.subtract(numOfSocks)).mod(numOfSocks.subtract(BigInteger.valueOf(1))) .compareTo(BigInteger.valueOf(0)) != 0) { out.println((day.subtract(numOfSocks)).mod(numOfSocks.subtract(BigInteger.valueOf(1)))); } else { if ((day.subtract(numOfSocks)).divide(numOfSocks.subtract(BigInteger.valueOf(1))) .mod(BigInteger.valueOf(2)).compareTo(BigInteger.valueOf(0)) == 0) { out.println(numOfSocks); } else { out.println(numOfSocks.subtract(BigInteger.valueOf(1))); } } } } out.flush(); } }
相关文章推荐
- HDU 6043 KazaQ's Socks - 2017多校联盟1 第11题 -规律
- 2017杭电多校联赛 1011 KazaQ's Socks(找规律)HDU 6043
- HDU 6043 KazaQ's Socks 【规律】
- HDU 6043 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 模拟
- (数学)HDU 6043 KazaQ's Socks
- HDU 6043 KazaQ's Socks
- 17 多校 - 1 - 1011 - KazaQ's Socks (HDU 6043)
- HDU 6043 KazaQ's Socks(暑期训练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
- HDU 6043(2017 多校训练赛1 1011) KazaQ's Socks
- 17暑假多校联赛1.11 HDU 6043 KazaQ's Socks
- 2017 Multi-University Training Contest - Team 1 1011&&HDU 6043 KazaQ's Socks【规律题,数学,水】
- HDU 5351 MZL's Border(java 找规律)