1. 程式人生 > >藍橋杯之機器人繁殖

藍橋杯之機器人繁殖

X星系的機器人可以自動複製自己。它們用1年的時間可以複製出2個自己,然後就失去複製能力。
每年X星系都會選出1個新出生的機器人發往太空。也就是說,如果X星系原有機器人5個,
1年後總數是:5 + 9 = 14
2年後總數是:5 + 9 + 17 = 31

如果已經探測經過n年後的機器人總數s,你能算出最初有多少機器人嗎?

資料格式:

輸入一行兩個數字n和s,用空格分開,含義如上。n不大於100,s位數不超過50位。

要求輸出一行,一個整數,表示最初有機器人多少個。

例如:
使用者輸入:
2 31

則程式應該輸出:
5

再例如:
使用者輸入:
97 2218388550399401452619230609499

則程式應該輸出:
8

資源約定:
峰值記憶體消耗 < 512M
CPU消耗 < 1000ms

思路:這種題一般就是要使用到數學公式了,這裡用到了等差數列求和公式和等比數列求和公式。

這裡寫圖片描述
接下來就是寫程式碼了

package 第六屆;

import java.math.BigInteger;
import java.util.Scanner;

public class Exe66 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in
); int year = scanner.nextInt(); scanner.nextLine(); String str = scanner.nextLine(); BigInteger big = new BigInteger(str); BigInteger two = new BigInteger(2+""); two = two.pow(year+1).subtract(BigInteger.ONE); big = big.subtract(BigInteger.valueOf
(year)); big = big.divide(two); System.out.println(big.add(BigInteger.ONE)); } }