#agc022c. [agc022_c]Remainder Game

[agc022_c]Remainder Game

题目描述

Aoki正在玩一个数字序列 a1,a2,...,aNa_{1}, a_{2}, ..., a_{N}。每秒钟,他执行以下操作:

  • 选择一个正整数 kk。对于序列中的每个元素 vv,Aoki 可以选择用 kk 整除 vv 后的余数替换 vv,或者保持不变。这个操作的代价是 2k2^{k}(无论他改变了多少个元素)。

Aoki想要将序列转换为 b1,b2,...,bNb_{1}, b_{2}, ..., b_{N}(元素的顺序很重要)。判断是否可能让 Aoki 执行这个任务,如果可以,找到所需的最小代价。

约束条件

  • 1leqNleq501 \\leq N \\leq 50
  • 0leqai,bileq500 \\leq a_{i}, b_{i} \\leq 50
  • 输入中的所有值都是整数。

输入

从标准输入读入输入数据,格式如下:

NN

a1a_{1} a2a_{2} ...... aNa_{N}

b1b_{1} b2b_{2} ...... bNb_{N}

输出

打印将原始序列转换为 b1,b2,...,bNb_{1}, b_{2}, ..., b_{N} 所需的最小代价。如果任务无法完成,则输出 \-1\-1

示例输入 1

3
19 10 14
0 3 4

示例输出 1

160

以下是可能的操作序列:

  • 选择 k=7k = 7。将 1919 替换为 551010 替换为 33,不修改 1414。序列现在为 5,3,145, 3, 14

  • 选择 k=5k = 5。将 55 替换为 00,保持不变的是 33,将 1414 替换为 44。序列现在为 0,3,40, 3, 4

总代价为 27+25=1602^{7} + 2^{5} = 160

示例输入 2

3
19 15 14
0 0 0

示例输出 2

2

Aoki可以选择 k=1k = 1,把所有元素变成 00。代价是 21=22^{1} = 2

示例输入 3

2
8 13
5 13

示例输出 3

-1

任务无法完成,因为使用给定的操作无法将 88 转换为 55

示例输入 4

4
2 0 1 8
2 0 1 8

示例输出 4

0

这里不需要任何操作。代价为 00

示例输入 5

1
50
13

示例输出 5

137438953472

注意溢出问题。