Trang chủ Tin Học Lớp 11 xem ảnh để hiểu rõ hơn =V Cho số nguyên...

xem ảnh để hiểu rõ hơn =V Cho số nguyên dương . Yêu cầu: Hãy đếm số nghiệm nguyên dương của phương trình: 1/x+1/y=1/n . Dữ liệu Dòng đầu ti

Câu hỏi :

xem ảnh để hiểu rõ hơn =V Cho số nguyên dương . Yêu cầu: Hãy đếm số nghiệm nguyên dương của phương trình: 1/x+1/y=1/n . Dữ liệu Dòng đầu tiên chứa số nguyên dương - số test . dòng sau, mỗi dòng chứa một số nguyên dương . Kết quả In ra dòng, mỗi dòng chứa một số nguyên dương là kết quả của bài toán trên. Ví dụ Input Copy 2 2 3 Output Copy 3 3 Giải thích Test 1: Các cặp số thoả mãn đề bài là . Test 2: Các cặp số thoả mãn đề bài là

image

Lời giải 1 :

#pragma target("avx3")
#pragma GCC optimize("Ofast")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("unroll-loops")

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;

#define X first
#define Y second
#define gcd __gcd
#define pb push_back
#define all(x) (x).begin(), (x).end()
#define reset(x, val) memset(x, val, sizeof(x))
#define FastIO ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
#define ll long long
#define IT __int128

template<typename T> void maximize(T &res, const T &val) { if (res < val) res = val; }
template<typename T> void minimize(T &res, const T &val) { if (res > val) res = val; }
template<typename T> bool to_maximize(T &res, const T &val) { if (res < val) { res = val; return true; } return false; }
template<typename T> bool to_minimize(T &res, const T &val) { if (res > val) { res = val; return true; } return false; }

ostream& operator<<(ostream& o, const __int128& x) {
    if (x < 0) return o << "-" << -x;
    if (x < 10) return o << (char)(x + '0');
    return o << x / 10 << (char)(x % 10 + '0');
}

const int Lim = 31650;
vector<int> pr;
vector<int> lpf;
void Linear_sieve(int n = Lim) {
    pr.assign(1, 2);
    lpf.assign(n + 1, 2);

    for (int x = 3; x <= n; x += 2) {
        if (lpf[x] == 2) pr.push_back(lpf[x] = x);
        for (int i = 1; i < pr.size() && pr[i] <= lpf[x] && pr[i] * x <= n; ++i)
            lpf[pr[i] * x] = pr[i];
    }
}

int calc(int x, vector<int> &a) {
    for (int i: pr) {
        if (1ll * i * i > x) break;
        while (x % i == 0) a[i] += 2, x /= i;
    }
    
    if (x > 1) {
        if (x >= Lim) return x; 
        a[x] += 2; 
    }
    return 0;
}

void solve() {
    int x;
    cin >> x;
    
    IT res = 1;
    vector<int> a(Lim, 0);
    
    // Tính ước của x^2 v:
    int r = calc(x, a);
    for (int i: pr) res *= a[i] + 1;
    if (r != 0) res *= 3;
    
    cout << res << "\n";
}

signed main() {
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    
    int t = 1;
    cin >> t;
    Linear_sieve();
    while (t--) solve();
}

Thảo luận

-- code đỉnh đấy =)
-- nhìn thì có vẻ khá là gì và này nọ nhưng ko biết ac ko thôi :))
-- =) ac rồi nice sừ

Bạn có biết?

Tin học, tiếng Anh: informatics, tiếng Pháp: informatique, là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng (ảo). Với cách hiểu hiện nay, tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin.

Nguồn : Wikipedia - Bách khoa toàn thư

Tâm sự 11

Lớp 11 - Năm thứ hai ở cấp trung học phổ thông, gần đến năm cuối cấp nên học tập là nhiệm vụ quan trọng nhất. Nghe nhiều đến định hướng sau này rồi học đại học. Ôi nhiều lúc thật là sợ, hoang mang nhưng các em hãy tự tin và tìm dần điều mà mình muốn là trong tương lai nhé!

Nguồn : ADMIN :))

Liên hệ hợp tác hoặc quảng cáo: gmail

Điều khoản dịch vụ

Copyright © 2021 HOCTAPSGK