文件B
输入数据的第一行指 阿尔巴尼亚 WhatsApp 数据 定数字的个数N (1 ≤ N ≤ 60,000)。接下来的N行每一行都包含一个不超过 10,000 的自然数,因此,程序应该输出一个数字:元素的乘积为 62 的倍数的对的数量。
:5 2 6 13 31 93
上述示例输入的示例输出:4
在您的答案中,指明两个数字:第一个是文件A所需金额的值,然后是文件B所需金额的值。
解释。从 5 个数字中,您可以组成 4 对满足条件的数字。对于给定的一组数字,我们得到对 (2, 31)、(2, 93)、(6, 31)、(6, 93)。
以下是文件中一些数字的示例:
解决方案。
如果满足以下条件之一(这些条件不能同时为真),则两个数的乘积可被 62 整除。
A. 两个因数都能被 62 整除。
B. 其中一个因数能被 62 整除,但另一个不能被 62 整除。
C. 两个因数都不能被 62 整除,但一个因数可以被 2 整除,另一个因数可以被 31 整除。
输入数字时,您可以确定每个数字是否能被 62、2 或 31 整除,并计算以下值:
1) n62——62的倍数的数字个数;
2) n31——是31的倍数但不是62的倍数的数字的个数;
3) n2 - 是 2 的倍数但不是 62 的倍数的数字的数量。
满足条件A的对的数量可以使用公式n62·(n62 – 1)/2来计算。
满足条件B的对的数量可以使用公式n62·(N – n62)来计算。
满足条件B的对的数量可以使用公式n2·n31来计算。
因此,所需的对数可以通过公式 n62 · (n62 – 1)/2 + n62 · (N – n62) + n2 · n31 计算。
解决方案。
让我们用 Pascal 编写该问题的解决方案。