藍橋杯之機器人繁殖
阿新 • • 發佈:2019-01-26
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));
}
}