游游的选数乘积

简介: 游游的选数乘积

题目描述

游游拿到了一个数组,她准备在其中选择两个数,使得乘积的末尾至少有x个0。游游想知道,至少有多少种不同的取数方法?

输入描述:第一行输入两个正整数n和x,代表数组的大小以及乘积末尾0的数量。第二行输入n个正整数ai,代表游游拿到的数组。1≤n,x≤10^5,1≤ai≤10^9

输出描述:输出一个整数,代表游游选择的方案数。

#include <iostream>
#include <vector>
using namespace std;
const int MAX_R = 40, MAX_C =20;
int main() {
    vector<vector<int>> cnt(MAX_R, vector<int>(MAX_C));
    int n, x;
    cin >> n >> x;
    for (int i = 0; i < n; ++i) {
        int ai;
        cin >> ai;
        int p2 = 0, p5 = 0;
        while (ai % 2 == 0) {
            p2++, ai /= 2;
        }
        while (ai % 5 == 0) {
            p5++, ai /= 5;
        }
        cnt[p2][p5]++;
    }
    long long ans = 0;
    for (int i = 0; i < MAX_R; ++i) {
        for (int j = 0; j < MAX_C; ++j) {
            for (int i2 = max(0, x - i); i2 < MAX_R; ++i2) {
                for (int j2 = max(0, x - j); j2 < MAX_C; ++j2) {
                    ans += (i == i2 && j == j2 ? cnt[i][j] * (cnt[i][j] - 1LL) : cnt[i][j] * cnt[i2][j2]);
                }
            }
        }
    }
    cout << ans / 2 << endl;
    return 0;
}


目录
相关文章
|
6月前
【P1035】级数求和
【P1035】级数求和
|
6月前
|
存储 机器学习/深度学习 算法
$求两个对称矩阵之和与乘积
$求两个对称矩阵之和与乘积
|
7月前
|
索引
238.除自身以外数组的乘积
238.除自身以外数组的乘积
31 0
|
7月前
L1-048 矩阵A乘以B
L1-048 矩阵A乘以B
54 0
除自身以外数组的乘积
除自身以外数组的乘积
45 0
|
算法
找出三个最大值求乘积
找出三个最大值求乘积
86 0
7-93 矩阵A乘以B
7-93 矩阵A乘以B
128 0
|
C++
C++ 超大整数相加、相乘的精确求解,以及10000的阶乘
C++ 超大整数相加、相乘的精确求解,以及10000的阶乘
122 0
Acwing 平方矩阵 C++
Acwing 平方矩阵 C++
130 0
Acwing 平方矩阵 C++