Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
- package summerp1;
- import java.util.*;
- import java.io.*;
- public class four {
- static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- static StringTokenizer st;
- static int N,M;
- static long n[],m[];
- static String temp;
- public static void main(String[] args)throws IOException {
- N = readInt();
- n = new long [N+2];
- for(int i = 1; i <= N+1; i++)n[i] = readLong();
- M = readInt();
- m = new long [M+2];
- for(int i = 1; i <= M+1; i++)m[i] = readLong();
- if(N < M){
- long t[] = n;
- n = m;
- m = t;
- }
- double mid = 0, m = 0;
- double difference = Integer.MAX_VALUE;
- int a = readInt(), b = readInt();
- for(int i = a; i <= b; i++){
- //System.out.println(Math.abs(f(i)-g(i))+" "+f(i)+" "+g(i)+" "+i);
- if(Math.abs(f(i)-g(i)) < difference){
- mid = i;
- difference = Math.abs(f(i)-g(i));
- //System.out.println(difference+" "+i);
- }
- }
- temp = Integer.toString((int)mid);
- String key = "";
- difference = Integer.MAX_VALUE;
- for(int i = 0; i < 10; i++){
- String temp2 = temp+"."+Integer.toString(i);
- double temp3 = Double.parseDouble(temp2);
- if(Math.abs(f(temp3)-g(temp3)) < difference){
- key = Integer.toString(i);
- difference = Math.abs(f(temp3)-g(temp3));
- }
- }
- temp = temp + "." + key;
- key = "";
- difference = Integer.MAX_VALUE;
- for(int i = 0; i < 10; i++){
- String temp2 = temp+Integer.toString(i);
- double temp3 = Double.parseDouble(temp2);
- if(Math.abs(f(temp3)-g(temp3)) < difference){
- key = Integer.toString(i);
- difference = Math.abs(f(temp3)-g(temp3));
- }
- }
- temp += key;
- key = "";
- difference = Integer.MAX_VALUE;
- for(int i = 0; i < 10; i++){
- String temp2 = temp+Integer.toString(i);
- double temp3 = Double.parseDouble(temp2);
- if(Math.abs(f(temp3)-g(temp3)) < difference){
- key = Integer.toString(i);
- difference = Math.abs(f(temp3)-g(temp3));
- }
- }
- temp += key;
- key = "";
- difference = Integer.MAX_VALUE;
- for(int i = 0; i < 10; i++){
- String temp2 = temp+Integer.toString(i);
- double temp3 = Double.parseDouble(temp2);
- if(Math.abs(f(temp3)-g(temp3)) < difference){
- key = Integer.toString(i);
- difference = Math.abs(f(temp3)-g(temp3));
- }
- }
- temp += key;
- key = "";
- difference = Integer.MAX_VALUE;
- for(int i = 0; i < 10; i++){
- String temp2 = temp+Integer.toString(i);
- double temp3 = Double.parseDouble(temp2);
- if(Math.abs(f(temp3)-g(temp3)) < difference){
- key = Integer.toString(i);
- difference = Math.abs(f(temp3)-g(temp3));
- }
- }
- temp += key;
- key = "";
- difference = Integer.MAX_VALUE;
- for(int i = 0; i < 10; i++){
- String temp2 = temp+Integer.toString(i);
- double temp3 = Double.parseDouble(temp2);
- if(Math.abs(f(temp3)-g(temp3)) < difference){
- key = Integer.toString(i);
- difference = Math.abs(f(temp3)-g(temp3));
- }
- }
- temp += key;
- key = "";
- difference = Integer.MAX_VALUE;
- for(int i = 0; i < 10; i++){
- String temp2 = temp+Integer.toString(i);
- double temp3 = Double.parseDouble(temp2);
- if(Math.abs(f(temp3)-g(temp3)) < difference){
- key = Integer.toString(i);
- difference = Math.abs(f(temp3)-g(temp3));
- }
- }
- temp += key;
- key = "";
- difference = Integer.MAX_VALUE;
- for(int i = 0; i < 10; i++){
- String temp2 = temp+Integer.toString(i);
- double temp3 = Double.parseDouble(temp2);
- if(Math.abs(f(temp3)-g(temp3)) < difference){
- key = Integer.toString(i);
- difference = Math.abs(f(temp3)-g(temp3));
- }
- }
- temp += key;
- System.out.println(temp);
- //System.out.println(f(Double.parseDouble(temp))+" "+g(Double.parseDouble(temp)));
- }
- static double f(double mid){
- double f = 0;
- for(int i = 1; i <= N+1; i++){
- if(i == N+1){f += n[i]; break;}
- f += (double)Math.pow(mid, N-i+1) * n[i];
- }
- return f;
- }
- static double g(double mid){
- double g = 0;
- for(int i = 1; i <= M+1; i++){
- if(i == M+1){g += m[i]; break;}
- g += (double)Math.pow(mid, M-i+1) * m[i];
- }
- return g;
- }
- static int check(double mid){
- double f = 0, s = 0;
- for(int i = 1; i <= N+1; i++){
- if(i == N){f += n[i]; break;}
- f += (double)Math.pow(mid, N-i) * n[i];
- }
- for(int i = 1; i <= M+1; i++){
- if(i == M){f += m[i]; break;}
- s += (double)Math.pow(mid, M-i) * m[i];
- }
- if(f > s){
- return 1;
- }
- else return 2;
- }
- static String next () throws IOException {
- while (st == null || !st.hasMoreTokens())
- st = new StringTokenizer(br.readLine().trim());
- return st.nextToken();
- }
- static long readLong () throws IOException {
- return Long.parseLong(next());
- }
- static int readInt () throws IOException {
- return Integer.parseInt(next());
- }
- static double readDouble () throws IOException {
- return Double.parseDouble(next());
- }
- static String readLine () throws IOException {
- return br.readLine().trim();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement