avatar
level icon
PQN

02/07/2024

Giúp mình với! Cho một số nguyên dương N, hãy viết chương trình đếm số lượng số có đúng 9 ước và không lớn hơn N. INPUT: Một dòng duy nhất ghi số nguyên dương N ( 0 < N < 10^9 ). OUTPUT: In ra kết qu...

thumb up 0
thumb down
Trả lời câu hỏi của PQN
  • Câu trả lời phải chính xác, đầy đủ dựa trên kiến thức xác thực:
    • ✔ Đối với câu hỏi trắc nghiệm: Đưa đáp án lựa chọn + giải thích lý do chọn đáp án.
    • ✔ Đối với câu hỏi tự luận: Đưa lời giải và đáp án cho câu hỏi.
    • ✔ Đối với câu hỏi trả lời ngắn: Đưa ra đáp án + giải thích lý do.
    • ✔ Chấp nhận sử dụng ảnh do thành viên viết tay, ảnh cần rõ nét, không bị mờ, vỡ ảnh.
  • Sử dụng ngôn ngữ rõ ràng, dễ hiểu.
  • Tránh đưa ra các ý kiến cá nhân mang tính chất chủ quan.
  • Nếu sử dụng thông tin từ nguồn khác, phải trích dẫn nguồn đầy đủ và chính xác.
  • Tuyệt đối không được sao chép các thông tin từ các trang khác, từ AI hoặc chatGPT.
CÂU TRẢ LỜI
avatar
Timi

02/07/2024

Trợ lý học tập AI - Câu trả lời này chỉ mang tính tham khảo
Để giải bài toán này, chúng ta có thể sử dụng thuật toán đếm số ước của mỗi số nguyên dương không lớn hơn N và sau đó đếm xem có bao nhiêu số có chính xác 9 ước. Dưới đây là một đoạn code C++ để giải quyết bài toán này: ```cpp #include <iostream> #include <cmath> using namespace std; // Hàm kiểm tra xem một số có phải là số chính phương hay không bool isPerfectSquare(int n) { int sqrt_n = sqrt(n); return (sqrt_n * sqrt_n == n); } // Hàm đếm số lượng ước của một số nguyên dương int countDivisors(int n) { int count = 0; for (int i = 1; i <= sqrt(n); i++) { if (n % i == 0) { // Nếu i là một ước khác nhau thì tăng biến đếm lên 2 if (n / i != i) { count += 2; } else { // Nếu i là một ước duy nhất thì tăng biến đếm lên 1 count++; } } } return count; } int main() { int N; cin >> N; int count = 0; for (int num = 1; num <= N; num++) { if (countDivisors(num) == 9 && isPerfectSquare(num)) { count++; } } cout << count << endl; return 0; } ``` Kết quả khi chạy với input là `1000` sẽ là `8`, tương tự như output bạn đã cung cấp.
Hãy giúp mọi người biết câu trả lời này thế nào?
0/5 (0 đánh giá)
thumb up 0
thumb down
0 bình luận
Bình luận
avatar
level icon
Khánh Linh

02/07/2024

#include <bits/stdc++.h>
#define ll unsigned long long
using namespace std;
vector<int> primes;
void SieveOfEratosthenes(int n){
   bool prime[n + 1];
   memset(prime, true, sizeof(prime));
   for (int p = 2; p * p <= n; p++) {
       if (prime[p] == true) {
           for (int i = p * p; i <= n; i += p) prime[i] = false;
       }
   }
   for (int p = 2; p <= n; p++)
       if (prime[p]) primes.push_back(p);

}
int main(){
   int n;
   cin >> n;
   SieveOfEratosthenes(50001);
   int ans = 0;
   int pl = primes.size();
   for (int i = 0; i < pl; i++){
       ll tmp = pow(primes[i], 8);
       if (tmp <= n and tmp > 0) ans++;
       for (int j = i + 1; j < pl; j++){
           ll tmp = pow((primes[i]*primes[j]),2);
           if (tmp <= n and tmp > 0) ans++;
       }
   }
   cout << ans;
   return 0;
}

Hãy giúp mọi người biết câu trả lời này thế nào?
0/5 (0 đánh giá)
thumb up 0
thumb down
0 bình luận
Bình luận

Nếu bạn muốn hỏi bài tập

Các câu hỏi của bạn luôn được giải đáp dưới 10 phút

Ảnh ads

CÂU HỎI LIÊN QUAN

FQA.vn Nền tảng kết nối cộng đồng hỗ trợ giải bài tập học sinh trong khối K12. Sản phẩm được phát triển bởi CÔNG TY TNHH CÔNG NGHỆ GIA ĐÌNH (FTECH CO., LTD)
Điện thoại: 1900636019 Email: info@fqa.vn
location.svg Địa chỉ: Số 21 Ngõ Giếng, Phố Đông Các, Phường Đống Đa, Thành phố Hà Nội, Việt Nam.
Tải ứng dụng FQA
Người chịu trách nhiệm quản lý nội dung: Đào Trường Giang Giấy phép thiết lập MXH số 07/GP-BTTTT do Bộ Thông tin và Truyền thông cấp ngày 05/01/2024
Copyright © 2023 fqa.vn All Rights Reserved