Codeforces 1471 D

Codeforces 1471 D

关键点

  1. 任意一个整数可以分解为 x 2 ⋅ y x^2\cdot y x2y的形式,其中y只能分解为 1 2 ⋅ y 1^2\cdot y 12y的形式.
  2. 如果两个正数相临(adjacent)那么,当且仅当它们的分解形式中的y相同.
  3. 对于一组相临的数字,它们将会被替换着一种数字中所有数字的乘积.
    • 如果这组数字的个数为奇数,那么替换后,每一个数字的分解形式中的y不发生变化.
    • 如果这组数字中的个数为偶数,那么替换后,每一个数字的分解形式中的y变为1(数字本身变成一个数字的平方).
  4. 一次变化后,各组数字的值发生改变,但是各组的元素个数不变.

过程

  1. 对于1-1e6中的每一个数,计算它的分解形式,保存y即可.
  2. 读入数字,统计每一个组内的个数.
  3. 对于w=0的情况,直接输出最大的集合数字.
  4. 对于w>0的情况,计算最大的奇数集合的个数以及所有偶数集合的个数与1集合的个数之和,输出最大的就好.

猜你喜欢

转载自blog.csdn.net/agctXY/article/details/112267861