Rufo-nun nəhəngi#12430

Rufo-nun nəhəngi (Həll təhlili)

Çevirmə qaydası tələb edir ki, istənilən (a_i, b_i) cütü üçün ya b_i = x, ya da b_i = a_i(x-1) şərtini ödəsin. Birinci elementə (a_1, b_1) diqqət yetirərək, gizli tam ədəd üçün ən çoxu iki namizəd qiymət müəyyən edə bilərik: x = b_1 və ya x = \frac{b_1}{a_1} + 1 (yalnız b_1, a_1-ə bölünəndirsə və x \ge 1 olduqda). bütün massiv üçün eyni olmalı olduğuna görə, verilmiş məntiqdən istifadə edərək bu namizədlərdən hər hansı birinin hər bir a_i-dən uyğun b_i yaratdığını yoxlayırıq: əgər a_i > x və a_i(x-1) > x olarsa, onda b_i = a_i(x-1); əks halda, b_i = x. Əgər namizədlərdən biri bütün indeks üçün bunu ödəyirsə, o, düzgün cavabdır; əgər heç biri uyğun gəlmirsə, nəticə olur.

def ok(x,n,a,b):
	if x<1: return 0
	for i in range(n):
		if a[i]>x and a[i]*(x-1)>x: r=a[i]*(x-1)
		else: r=x
		if r!=b[i]: return 0
	return 1

def solve():
	n=int(input())
	a=list(map(int,input().split()))
	b=list(map(int,input().split()))
	if ok(b[0],n,a,b):
		print(b[0]); return
	if b[0]%a[0]==0:
		x=b[0]//a[0]+1
		if ok(x,n,a,b):
			print(x); return
	print(-1)

t=int(input())
for _ in range(t):
	solve()