游游的选数乘积

简介: 游游的选数乘积

题目描述

游游拿到了一个数组,她准备在其中选择两个数,使得乘积的末尾至少有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;
}


相关文章
平方根倒数快速算法
平方根倒数快速算法
97 0
ccfcsp 202312-2 因子化简
ccfcsp 202312-2 因子化简
ccfcsp 202009-2 因子化简
ccfcsp 202009-2 因子化简
|
10月前
|
238.除自身以外数组的乘积
238.除自身以外数组的乘积
39 0
矩阵的转置、加和乘法写入C++
矩阵的转置、加和乘法写入C++
88 0
|
10月前
L1-048 矩阵A乘以B
L1-048 矩阵A乘以B
70 0
除自身以外数组的乘积
除自身以外数组的乘积
52 0
7-93 矩阵A乘以B
7-93 矩阵A乘以B
151 0