2020暑假牛客多校 A (高精度) java第一题
tql
py3 : print(eval(input().replace('(', '**(')))
import java.io.*;
import java.math.*;
import java.util.*;
import java.util.Scanner;
//import java.text.*;
public class Main {
static String s;
static int n, x;
public static void main(String[] args) {
Scanner cin = new Scanner (new BufferedInputStream(System.in));
//Scanner sc=new Scanner(System.in);
s = cin.nextLine();
n = s.length();
x = -1;
BigInteger t = dfs();
System.out.println(t);
}
static BigInteger qpow(BigInteger a, BigInteger b) {
BigInteger res = BigInteger.valueOf(1);
while(b.compareTo(BigInteger.valueOf(0)) !=0) {
BigInteger tt = b.mod(BigInteger.valueOf(2));
if(tt.compareTo(BigInteger.valueOf(1)) ==0) {
res = res.multiply(a);
}
a = a.multiply(a);
b = b.divide(BigInteger.valueOf(2));
}
return res;
}
static BigInteger dfs() {
x ++;
BigInteger res = BigInteger.valueOf(0);
BigInteger temp = BigInteger.valueOf(0);
int flag = 0;
while(x < n && flag != 1) {
if(s.charAt(x) == ')') flag = 1;
if(s.charAt(x) == '2') {
if(x + 1 < n && s.charAt(x + 1) == '(') {
temp = dfs();
BigInteger tt = qpow(BigInteger.valueOf(2), temp);
//System.out.print("(" + temp + " " + tt+ ") ");
res = res.add(qpow(BigInteger.valueOf(2), temp));
}
else {
res = res.add(BigInteger.valueOf(2));
}
}
if(flag == 0) x++;
}
//System.out.print(t + " ");
return res;
}
}