Problem:
MathJax.Hub.Config({ tex2jax: { inlineMath: [["$","$"], ["\\(","\\)"]], skipTags: ["script","noscript","style","textarea","code"], processEscapes: true }});

問題文

有理数列 $X_0, X_1, X_2, ..., X_N$ がある。各項は以下のように定義される。

$X_0 = 0$

$X_i = X_{i-1}$ $op_i$ $Y_i$ ($1 \leq i \leq N$). ただし $op_i$ は $＋$、$−$、$×$、$÷$のいずれかである。

$X_N$ を求めよ。

入力

入力は以下の形式に従う。与えられる数は全て整数である。

$N$
$o_1$ $Y_1$
$o_2$ $Y_2$
$...$
$o_N$ $Y_N$

$o_i = 1$ のとき $op_i$ は＋、$o_i = 2$ のとき $op_i$ は−、$o_i = 3$ のとき $op_i$ は×、$o_i = 4$ のとき $op_i$ は÷である。

制約

$1 \leq N \leq 10^5$

$1 \leq o_i \leq 4$

$-10^6 \leq Y_i \leq 10^6$

$o_i=4$ ならば $Y_i \neq 0$

$X_N$ は $-2^{31}$ 以上 $2^{31}$ 未満の整数となる。

出力

$X_N$ の値を1行に出力せよ。

Sample Input 1

4
1 1
4 2
2 4
3 4

Output for the Sample Input 1

-14

$X_0 = 0$

$X_1 = X_0 ＋ 1 = 1$

$X_2 = X_1 ÷ 2 = 1/2$

$X_3 = X_2 − 4 = -7/2$

$X_4 = X_3 × 4 = -14$

Solution in JAVA (judge verdict: Wrong Answer)


import java.util.*;
import java.io.*;
import static java.util.Arrays.*;
import static java.util.Collections.*;
import static java.lang.Math.*;

public class Main {

	int INF = 1 << 28;
	//long INF = 1L << 62;
	double EPS = 1e-10;

	void run() {
		Scanner sc = new Scanner(System.in);
		int n =sc.nextInt();
		P x = new P(0, 1);
		for(int i=0;i<n;i++) {
			int op = sc.nextInt(), y = sc.nextInt();
			if( op==1 ) x.add(y);
			if( op==2 ) x.add(-y);
			if( op==3 ) x.mlt(y);
			if( op==4 ) x.div(y);
		}
		System.out.println(x.toInt());
	}
	
	class P {
		long x, y;
		P(long x, long y) {
			this.x = x;
			this.y = y;
		}
		
		void add(long v) {
			x += v * y;
		}
		
		void mlt(long v) {
			long gcd = gcd(v, y);
			x *= v / gcd;
			y /= gcd;
		}
		
		void div(long v) {
			long gcd = gcd(v, x);
			y *= v / gcd;
			x /= gcd;
		}
		
		long gcd(long a, long b) {
			if( b == 0) return a;
			return gcd(b, a%b);
		}
		
		long toInt() {
			return x / y;
		}
	}

	void debug(Object... os) {
		System.err.println(Arrays.deepToString(os));
	}

	public static void main(String[] args) {
		new Main().run();
	}
}