BIẾT KẾT QUẢ NGAY SAU KHI NỘP BÀI - NÂNG CAO KĨ NĂNG TỰ HỌC MIỄN PHÍ
VNOJ Online Judge là nền tảng học tập và rèn luyện tư duy toán học, giúp học sinh phát triển khả năng lập luận logic thông qua việc giải quyết các bài toán bằng các ngôn ngữ lập trình khác nhau. Hệ thống hỗ trợ nhiều ngôn ngữ như: Pascal, C, C++, Java, Python, Scratch…
Tuy nhiên, VNOJ.IO.VN lựa chọn C++ làm ngôn ngữ trọng tâm phù hợp với học sinh THCS–THPT, góp phần rèn luyện tư duy toán học và lập luận logic, đồng thời giúp các em dễ dàng tiếp cận các ngôn ngữ lập trình khác sau này. Hiện tại cũng có thể chọn nộp bằng Python, Java, C#, Scratch.
Tổng điểm đã bỏ % điểm rating
Hướng dẫn giải của Test pdf (4,0 điểm)
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
//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