游游的选数乘积

简介: 游游的选数乘积

题目描述

游游拿到了一个数组,她准备在其中选择两个数,使得乘积的末尾至少有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月前
489: 平方和与立方和
489: 平方和与立方和
|
5月前
【P1035】级数求和
【P1035】级数求和
|
5月前
|
Python
NumPy 舍入小数、对数、求和和乘积运算详解
NumPy 提供五种舍入小数的方法:`trunc()`, `fix()`, `around()`, `floor()`, `ceil()`。此外,它还支持对数运算,如 `log2()`, `log10()`, `log()`,以及自定义底数的对数。NumPy 的 `sum()` 和 `prod()` 函数用于数组求和与乘积,可指定轴进行计算,`cumsum()` 和 `cumprod()` 实现累积求和与乘积。关注公众号 &quot;Let us Coding&quot; 获取更多内容。
55 2
|
5月前
|
存储 机器学习/深度学习 算法
$求两个对称矩阵之和与乘积
$求两个对称矩阵之和与乘积
|
6月前
|
存储 弹性计算 运维
对100 以内的所有正整数相加求和
【4月更文挑战第29天】
65 2
|
6月前
|
索引
238.除自身以外数组的乘积
238.除自身以外数组的乘积
29 0
|
6月前
L1-048 矩阵A乘以B
L1-048 矩阵A乘以B
48 0
除自身以外数组的乘积
除自身以外数组的乘积
43 0
|
算法
找出三个最大值求乘积
找出三个最大值求乘积
82 0
7-93 矩阵A乘以B
7-93 矩阵A乘以B
122 0