Positive Con Sequences

From programming_contest
Revision as of 23:07, 26 August 2016 by imported>Kmk21 (Created page with "find two consecutive known numbers and calculate their difference and quotient. trying both, check whether the other known number is as it should be, and if so, return the mis...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

find two consecutive known numbers and calculate their difference and quotient. trying both, check whether the other known number is as it should be, and if so, return the missing number

import java.util.*;
public class a {
	Scanner in=new Scanner(System.in);
	public static void main(String[] args) {
		new a().go();
	}
	private void go() {
		OUT:
		while(true){
			int[] d=new int[4];
			for(int i=0;i<4;i++)d[i]=in.nextInt();
			if(d[0]==-1&&d[1]==-1)break;
			int index=0;
			for(int i=0;i<4;i++)if(d[i]==-1)index=i;
			int first=0;
			if(index<2)first=2;
			int diff=d[first+1]-d[first];
			int ans=-1;
			boolean works=true;
			for(int i=0;i<4;i++){
				int val=d[first]+diff*(i-first);
				if(d[i]==-1)ans=val;
				else if(val!=d[i])works=false;
			}
			if(works&&ans>0&&ans<1000001){
				System.out.println(ans);
				continue OUT;
			}
			diff=d[first+1]/d[first];
			if(d[first]*diff!=d[first+1]||(index==0&&d[1]%diff!=0)){
				System.out.println(-1);
				continue OUT;
			}
			ans=-1;
			works=true;
			for(int i=0;i<4;i++){
				int val=(int) (d[first]*Math.pow(diff, i-first));
				if(d[i]==-1)ans=val;
				else if(val!=d[i])works=false;
			}
			if(works&&ans<1000001)System.out.println(ans);
			else System.out.println(-1);
		}
	}
}