AT_abc433_d.[ABC433D] 183183

普及-

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

对于正整数 x,yx, y,定义 f(x,y)f(x, y) 如下:

  • 将 x,yx, y 以十进制表示(不含前导零),按照顺序拼接成字符串 SS,再将字符串 SS 作为十进制数解释成整数。

例如,f(12,3)=123f(12,3)=123,f(100,40)=10040f(100,40)=10040。

给定正整数 N,MN, M,以及一个长度为 NN 的正整数序列 A=(A1,A2,…,AN)A=(A_1, A_2, \ldots, A_N)。

请计算有多少对整数 (i,j)(i, j) 满足以下所有条件。

  • 1≤i,j≤N1 \le i, j \le N
  • f(Ai,Aj)f(A_i, A_j) 是 MM 的倍数。

输入格式

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

NN MM A1A_1 A2A_2 …\ldots ANA_N

输出格式

输出满足所有条件的整数对 (i,j)(i, j) 的个数。

输入输出样例

  • 输入#1

    2 11
    2 42

    输出#1

    2
  • 输入#2

    4 7
    2 8 16 183

    输出#2

    4
  • 输入#3

    5 5
    1000000000 1000000000 1000000000 1000000000 1000000000

    输出#3

    25
  • 输入#4

    12 13
    80 68 862370 82217 8 56 5 168 672624 6 286057 11864

    输出#4

    10

说明/提示

样例解释 1

  • 当 (i,j)=(1,1)(i, j) = (1, 1) 时,f(A1,A1)=22f(A_1, A_1) = 22,是 1111 的倍数。
  • 当 (i,j)=(1,2)(i, j) = (1, 2) 时,f(A1,A2)=242f(A_1, A_2) = 242,是 1111 的倍数。
  • 当 (i,j)=(2,1)(i, j) = (2, 1) 时,f(A2,A1)=422f(A_2, A_1) = 422,不是 1111 的倍数。
  • 当 (i,j)=(2,2)(i, j) = (2, 2) 时,f(A2,A2)=4242f(A_2, A_2) = 4242,不是 1111 的倍数。

综上,满足条件的整数对为 (i,j)=(1,1),(1,2)(i, j) = (1, 1), (1, 2),共 22 对。因此输出 22。

约束条件

  • 1≤N≤2×1051 \le N \le 2 \times 10^5
  • 1≤M≤1091 \le M \le 10^9
  • 1≤Ai≤1091 \le A_i \le 10^9
  • 所有输入值均为整数。

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页