import java.math.BigInteger;//因为数太大了,所以需要大整数型来进行计算
import java.util.Scanner;
/
add:加法
multiply:乘法
divide:除法
/
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
String s = in.nextLine();
s = s.trim();//因为两个数之间一个空格,会被读进来,所以要去掉开头的那个括号
BigInteger bi = new BigInteger(s);//不然这里类型转化是会出错
BigInteger bi1 = new BigInteger(“1”);
BigInteger bi2 = new BigInteger(“1”);
BigInteger bi3 = new BigInteger(“2”);
BigInteger bi4 = new BigInteger(“1”);
for(int i = 1;i < n;i){//因为第二年开始才有机器人被发射上去,所以要减少掉一年
bi1 = bi1.multiply(bi3);//这些机器人原本一年也能生产两台机器人
bi1 = bi1.add(bi4);//每一年都会有一台机器人被发射上去
bi2 = bi2.add(bi1);
}//计算的是那些被发生到天空的机器人如果在地上能够生产多少机器人,包括他本身
bi = bi.add(bi2);//如果没有机器人被发射上去太空了n年后机器人的数量
bi1 = new BigInteger(“1”);
bi2 = new BigInteger(“1”);
for(int i = 1;i <= n;i){
bi1 = bi1.multiply(bi3);
bi2 = bi2.add(bi1);
}//一开始只有一个机器人的情况下,在上述那种生产情况(那种没有机器人被发生到太空的情况)下一年能生产多少机器人
bi = bi.divide(bi2);//那么这两个数相除就是一开始机器人的数量了
System.out.println(bi);
in.close();
}
}//这样子写的时间复杂度应该是O(n方)