Hướng dẫn giải của Test pdf (4,0 điểm)


Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.

Scratch 3

Testpdf.png

//C++
#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    long long n;
    cin >> n;

    long long k = 1;
    long long tmp = n;

    // Phan tich n thanh thua so nguyen to
    for (long long p = 2; p * p <= tmp; ++p) {
        int cnt = 0;
        while (tmp % p == 0) {
            tmp /= p;
            cnt++;
        }
        // Neu so mu la le thi nhan them p vao k
        if (cnt % 2 == 1) {
            k *= p;
        }
    }

    // Neu con lai mot so nguyen to lon (mu = 1, la le)
    if (tmp > 1) {
        k *= tmp;
    }

    cout << k;
    return 0;
}
# Python
import sys
input = sys.stdin.readline

n = int(input().strip())

k = 1
tmp = n
p = 2

while p * p <= tmp:
    cnt = 0
    while tmp % p == 0:
        tmp //= p
        cnt += 1
    if cnt % 2 == 1:
        k *= p
    p += 1

if tmp > 1:
    k *= tmp

print(k)
// Java
import java.io.*;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        long n = Long.parseLong(br.readLine());
        long k = 1;
        long tmp = n;

        for (long p = 2; p * p <= tmp; p++) {
            int cnt = 0;
            while (tmp % p == 0) {
                tmp /= p;
                cnt++;
            }
            if (cnt % 2 == 1) {
                k *= p;
            }
        }

        if (tmp > 1) {
            k *= tmp;
        }

        System.out.println(k);
    }
}
// C#
using System;

class Program
{
    static void Main()
    {
        long n = long.Parse(Console.ReadLine());

        long k = 1;
        long tmp = n;

        for (long p = 2; p * p <= tmp; p++)
        {
            int cnt = 0;
            while (tmp % p == 0)
            {
                tmp /= p;
                cnt++;
            }
            if (cnt % 2 == 1)
            {
                k *= p;
            }
        }

        if (tmp > 1)
        {
            k *= tmp;
        }

        Console.WriteLine(k);
    }
}

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.