Trang chủ Tin Học Lớp 10 Cho xâu ký tự T gồm n ký tự chỉ gồm chữ cái, chữ số. Em hãy thực hiện hai...
Câu hỏi :

Cho xâu ký tự T gồm n ký tự chỉ gồm chữ cái, chữ số. Em hãy thực hiện hai thao tác sau: - Thao tác 1: Đếm các ký tự là ký tự số trong xâu T; - Thao tác 2: Tìm số P trong xâu ký tự T là số nguyên tố lớn nhất. Số P là tất cả các ký tự số liên tiếp trong xâu ký tự T và không có số 0 vô nghĩa. Ví dụ trong xâu ký tự T=aB0011cd230d124ab17 có các số P là 11, 230, 124, 17. Số nguyên tố P lớn nhất là 17. * Dữ liệu vào: Đọc vào từ file văn bản NTMAX.INP gồm một xâu ký tự T. * Kết quả ra: Ghi ra file bản NTMAX.OUT gồm: - Dòng 1 ghi số lượng các ký tự là ký tự số trong xâu T; - Dòng 2 ghi ra số nguyên tố P lớn nhất, nếu không có số P nguyên tố ghi ra số 0. * Ví dụ: NTMAX.INP NTMAX.OUT Giải thích aB0011cd230d124ab17 12 17 - Có 12 ký tự số trong xâu - Số P nguyên tố lớn nhất là 17 Ab12cd44bcd 4 0 Tinhoc 0 0 * Giới hạn: - Có 15/35 test, tương ứng 3,0 điểm với n 255 và P 103 ; - Có 10/35 test, tương ứng 2,0 điểm với n 255 và P 106 ; - Có 10/35 test, tương ứng 2,0 điểm với n 5.10 6 và P 5.106 . * Lưu ý: - Mỗi kết quả đúng được 50% số điểm của test; - Thí sinh phải đưa ra đủ 2 kết quả theo cấu trúc của file NTMAX.OUT (làm bằng c++ mọi người ơi cần gấp )

Lời giải 1 :

#include <iostream>
#include <string>
#include <cmath>
using namespace std;

bool is_prime(int n) {
    if (n < 2) return false;
    for (int i = 2; i <= sqrt(n); i++) {
        if (n % i == 0) return false;
    }
    return true;
}

int main() {
    string T;
    getline(cin, T);
    int digit_count = 0;
    int max_prime = 0;
    string current_number = "";
    for (char c : T) {
        if (isdigit(c)) {
            digit_count++;
            current_number += c;
        } else {
            if (!current_number.empty()) {
                int number = stoi(current_number);
                if (is_prime(number) && number > max_prime) {
                    max_prime = number;
                }
                current_number = "";
            }
        }
    }
    if (!current_number.empty()) {
        int number = stoi(current_number);
        if (is_prime(number) && number > max_prime) {
            max_prime = number;
        }
    }
    cout << digit_count << endl;
    cout << max_prime << endl;
    return 0;
}

Bạn có biết?

Tin học 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. 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. Hãy tận dụng sức mạnh của tin học để giải quyết các vấn đề và sáng tạo ra những giải pháp mới!

Nguồn :

Wikipedia - Bách khoa toàn thư

Tâm sự lớp 10

Lớp 10 - Năm đầu tiên ở cấp trung học phổ thông, chúng ta sẽ có nhiều bạn bè mới đến từ những nơi khác nhau. Ngôi trường mới, xa nhà hơn, mở ra một thế giới mới với nhiều điều thú vị. Hãy mở lòng đón nhận và tận hưởng những trải nghiệm mới!

Nguồn :

sưu tập

Copyright © 2024 Giai BT SGK