https://www.cnblogs.com/violet-acmer/p/9677435.html
题意:
研究人员需要使用某种细菌进行实验,给定一个序列代表接下来每个小时所用的细菌数目,已知初始时细菌的数目为 1 ,其数目每小时会翻倍增长,并且等到第一个小时以后开始实验,问最后残余的细菌数目。
题解:
因为细菌的数目可能会呈指数级上升,所以首先要想到大数。
然后用 java 模拟一下即可,最后别忘了 mod 1e9+7 。
AC代码:
1 import java.io.*; 2 import java.math.*; 3 import java.util.*; 4 5 public class Main 6 { 7 private static Scanner cin=new Scanner(new BufferedInputStream(System.in)); 8 static BigInteger b[]=new BigInteger[100010]; 9 static BigInteger MOD=new BigInteger("1000000007"); 10 public static void main(String[] args) 11 { 12 int n; 13 n=cin.nextInt(); 14 BigInteger now=BigInteger.ONE;//equal initial now=1 15 for(int i=1;i <= n;++i) 16 { 17 now=now.add(now); 18 b[i]=cin.nextBigInteger(); 19 if(now.compareTo(b[i]) < 0) 20 { 21 System.out.println("error"); 22 return ; 23 } 24 now=now.subtract(b[i]); 25 } 26 System.out.println(now.mod(MOD)); 27 } 28 }