Theo em thấy thì đã lâu lắm rồi chưa ai post gì vào Box này, sẵn có 1 vấn đề đang nhức đầu nên em post lên đây hỏi ae.
Đề: http://www.spoj.com/problems/PROBTNPO/
Em nộp code bằng Java nó cứ báo Runtime Error NZEC :beatbrick: trong khi cái e chuyển thể y chang sang CPP14 lại AC với thời gian 0.2s :salute:
Ai rảnh tư vấn cho em với :sosad: định đi theo con đường Java mà thế này thì nát, mất cả ngày của e r :surrender:
code Java
code CPP14
EDIT:
thay (line == null) thành (line == null || line.isEmpty())
Đề: http://www.spoj.com/problems/PROBTNPO/
Em nộp code bằng Java nó cứ báo Runtime Error NZEC :beatbrick: trong khi cái e chuyển thể y chang sang CPP14 lại AC với thời gian 0.2s :salute:
Ai rảnh tư vấn cho em với :sosad: định đi theo con đường Java mà thế này thì nát, mất cả ngày của e r :surrender:
code Java
Code:
import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException, InterruptedException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); PrintWriter pw = new PrintWriter(new BufferedOutputStream(System.out)); final Solver solver = new Solver(); for ( ; ; ) { String line = br.readLine(); if (line == null) { break; } StringTokenizer st = new StringTokenizer(line); int a = Integer.parseInt(st.nextToken()); int b = Integer.parseInt(st.nextToken()); int l = a, r = b; if (a > b) { l = b; r = a; } pw.println(a + " " + b + " " + solver.solve(l, r)); } br.close(); pw.close(); } } class Solver { private int[] dict = new int[1000000]; int solve(int l, int r) { int res = 0; for (int i = l; i <= r; ++i) { if (dict[i] == 0) { dict[i] = alg(i); } if (dict[i] > res) { res = dict[i]; } } return res; } private int alg(long n) { int res = 1; while (n != 1) { if (n % 2 != 0) { n = 3 * n + 1; n >>= 1; res += 2; } else { n >>= 1; ++res; } } return res; } }
Code:
#include <iostream> #include <string> #include <sstream> using namespace std; int *dict; int alg(long long n) { int res = 1; while (n != 1) { if (n % 2 != 0) { n = 3 * n + 1; n >>= 1; res += 2; } else { n >>= 1; ++res; } } return res; } int solve(int l, int r) { int res = 0; for (int i = l; i <= r; ++i) { if (dict[i] == 0) { dict[i] = alg(i); } if (dict[i] > res) { res = dict[i]; } } return res; } int main() { ios::sync_with_stdio(false); dict = new int[1000000]; for ( ; ; ) { string s; getline(cin, s); if (s == "") { break; } int a, b, i, j; stringstream(s) >> a >> b; i = a; j = b; if (a > b) { i = b; j = a; } cout << a << " " << b << " " << solve(i, j) << endl; } return 0; }
thay (line == null) thành (line == null || line.isEmpty())