求助WA#3
查看原帖
求助WA#3
738474
Erine楼主2022/12/22 21:00

自认为没有问题。

#include <bits/stdc++.h>
#define int long long
#define double long double

using namespace std;

const int maxn = 5e5 + 1;
const int mul = 1e9;
const double eps = 0.8;

int n;
int a[maxn];
int d2[maxn], d5[maxn];
int b[41][41];
int ans;

signed main() {
    cin >> n;
    for (int i = 1; i <= n; i++) {
        double x;
        cin >> x;
        a[i] = x * mul + eps;
        while (a[i] % 2 == 0) {
            ++d2[i];
            a[i] /= 2;
        }
        while (a[i] % 5 == 0) {
            ++d5[i];
            a[i] /= 5;
        }
    }
    for (int s2 = 18; s2 <= 40; s2++) {
        for (int s5 = 18; s5 <= 40; s5++) {
            memset(b, 0, sizeof(b));
            for (int i = 1; i <= n; i++) {
                if (s2 - d2[i] >= 0 && s5 - d5[i] >= 0) ans += b[s2 - d2[i]][s5 - d5[i]];
                b[d2[i]][d5[i]]++;
            }
        }
    }
    cout << ans;
    return 0;
}

2022/12/22 21:00
加载中...