Блог пользователя Anthony_Jakson

Автор Anthony_Jakson, история, 4 года назад, По-английски

A problem came in my mind few days ago. And now I am very willing to know the ans. I tried but couldn't solve it.

You are given n numbers 1<= n <= (10^5) you have to maximize the gcd of those numbers.

You can do one operation : Replace a with a-1 (a is a number)

**Note: ** It is not a part of any ongoing contest.

Can any one please tell me any solution that will work in this time constraint. Thanks in advance.

I am very sorry guys. You have to maximize .. not minimize

  • Проголосовать: нравится
  • -4
  • Проголосовать: не нравится

»
4 года назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

if all numbers are even or all numbers are odd then apply a — 1 in any a. Otherwise the GCD should be 1.

»
4 года назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

If you can only change one item then you can calculate an array of your suffix and prefix.

and try to reduce each item by 1 then take the gcd(suffix[i + 1], prefix[i — 1], a[i] — 1).

If you can apply that operation for multiple items then i don't know how to solve that.

Also obviously sometimes you may not do that operation at all.

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Let's just try to subtract 1 from each element one by one. If we get 1 as gcd we are good. Otherwise all other numbers are divisible by some prime number p, and such p is unique for each element we subtract 1 from. So we will get 1 in at most n * log (max a) operations (or we'll try all variants and will know answer if n is smaller)

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Auto comment: topic has been updated by Anthony_Jakson (previous revision, new revision, compare).

»
4 года назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Gcd of all numbers cannot be greater than smallest number , hence answer is smallest number or smallest number -1 , now you just have to check if u can achieve that, else gcd is 1.