DD

sau để khảo sát các bạn: Cho số nguyên dương n và dãy số nguyên dương a1, a2, ...an. Hãy đếm xem có bao nhiêu cặp (i, j) khác nhau, để kết quả của tích ai*aj có chữ số tận cùng bằng 9 (1 ≤ i<j<n).
Dữ liệu: Vào từ file TICH9.INP gồm:
+ Dòng đầu tiên là số nguyên dương n (2 ≤ n ≤ 10);
+ Dòng thứ 2 là n số nguyên dương a1, a2, ...an (ai ≤ 10100).
Kết quả: Ghi ra file TICH9.OUT là số lượng cặp thỏa mãn bài toán.
Ví dụ:
TICH9.INP
TICH9.OUT
4
2
3391
Ràng buộc:
+ Có 60% số điểm có n ≤ 103 và ai ≤ 100;
+ Có 30% số điểm có ai ≤ 109.
+ Có 10% số điểm còn lại không có ràng buộc gì thêm.

giúp mk nhé 😇😇

VH
10 tháng 9 lúc 21:01

#include <iostream>
#include <fstream>

using namespace std;

const int MAXN = 1e5 + 5;

int n, a[MAXN], countDigit[10];

long long C(int n) {
    return 1LL * n * (n - 1) / 2;
}

int main() {
    ifstream fin("TICH9.INP");
    ofstream fout("TICH9.OUT");

    fin >> n;
    for (int i = 1; i <= n; i++) {
        fin >> a[i];
        countDigit[a[i] % 10]++;
    }

    long long ans = C(countDigit[1]) + C(countDigit[9]) + C(countDigit[3]) + C(countDigit[7]);
    fout << ans << endl;

    return 0;
}

Bình luận (0)