#P1622. 减法和求余

减法和求余

题目描述

鸡尾酒的学生丹丹永远分不清减法和求余,他觉得两种运算都是将数字变小,所以差不多。

于是鸡尾酒给了他两道题目来帮助他分清这两种运算。第一道题目是这样的:给定一个包含 𝑛𝑛 个数字的数组,每次你可以任选两个数字做减法运算,将这两个数字变成一个新数字放回数组,经过 𝑛1𝑛−1 次操作之后变成一个数字。你的目标是让最终的这一个数字变得尽可能大,请问最大是多少。

当然,这道题只涉及减法,于是鸡尾酒还有一道同样的题目(只有加粗的地方不同):给定一个包含 𝑛𝑛 个数字的数组,每次你可以任选两个数字做求余运算,将这两个数字变成一个新数字放回数组,经过 𝑛1𝑛−1 次操作之后变成一个数字。你的目标是让最终的这一个数字变得尽可能大,请问最大是多少。

丹丹说:“都是 𝑛𝑛 个数字变成 11 个数字,这两道题不是一样吗?”

看来丹丹又分不清了,你能帮帮他吗?为了防止丹丹搞混数字,所以鸡尾酒给出的 𝑛𝑛 个数字各不相同。

输入格式

第一行输入一个正整数 𝑛,𝑘𝑛,𝑘,表示共有 𝑛𝑛 个数字,𝑘𝑘 是题目编号,如果 𝑘=1𝑘=1,则你需要完成“减法”这道题,𝑘=2𝑘=2 表示你需要完成“求余”这道题,n105n\le 10^5

接下来一行输入 𝑛𝑛 个数字,其中第 𝑖𝑖 个数字为 ai (1ai106)a_i\ (1 ≤ a_i ≤ 10^6)

输出格式

输出一行一个整数表示答案。

5 1
1 2 3 4 5
13

𝑘=1𝑘=1,说明是一道减法问题,可以先用数组中的 11 减去 22,得到 1−1,然后用 1−1 减去 44,得到 5−5,用 5−5 减去 55,得到 10−10,用 33 减去 10−10,得到 1313

3 2
100 400 905
100

𝑘=2𝑘=2,说明是一道求余问题,先用 905905 求余 400400,得到余数 505505,然后用 100100 求余 505505,得到余数 100100。方案不唯一,但是无法得到比 100100 还大的数字了。