Trang chủ Tin Học Lớp 9 N1004B - Số bin bon Yêu cầu: Mr Bon là...

N1004B - Số bin bon Yêu cầu: Mr Bon là cậu em trai song sinh của Mr Bin. Cậu ấy cũng đang học các con số, cậu ấy tính tổng các chữ số của một số nguyên dương n

Câu hỏi :

N1004B - Số bin bon Yêu cầu: Mr Bon là cậu em trai song sinh của Mr Bin. Cậu ấy cũng đang học các con số, cậu ấy tính tổng các chữ số của một số nguyên dương n cho trước được một số nguyên dương a. Tiếp đến cậu lại đi tìm chữ số lớn nhất của n và viết ghép chữ số lớn nhất đó vào sau số a thu được số nguyên dương k. Mr Bon muốn biết k có phải là số nguyên tố hay không? Nếu số đó là nguyên tố thì cậu gọi số đó là số "binbon". Ví dụ số 111 là một số "binbon" vì tổng các chữ số là a = 3, chữ số lớn nhất là 1 nên số k lập được là 31, số 31 là một số nguyên tố nên n = 111 là số "binbon". Thú vị với suy nghĩ này cậu bé muốn kiểm tra một loạt các số có phải là số "binbon" hay không? Hãy giúp cậu bé nhé ! Dữ liệu: - Dòng đầu ghi số nguyên dương t là số test (0 < t <= 10 3 ). - t dòng sau mỗi dòng ghi số nguyên dương n (0 < n <= 10 1000 ). Kết quả: in ra t dòng, mỗi dòng ghi YES hoặc NO nếu số tương ứng là "binbon" hoặc không? Ví dụ input 2 111 11111 output YES NO C++ nha mn , có thể tìm bài trên laptrinhphothong để nạp thử ạ !

Lời giải 1 :

`\color{red}{\text{@hoangduy67}}`

#include <iostream>
using namespace std;
#define ll long long
ll t;
string a;
bool BinBon(string s) {
    ll tcs = 0, csln = -1e18, tmp;
    for (ll i = 0; i < s.length(); ++i)
    {
        tcs = tcs + s[i] - 48;
        tmp = a[i] - 48;
        csln = max(csln, tmp);
    }
    ll n = tcs * 10 + csln;
    if (n < 2) return false;
    for (ll i = 2; i * i <= n; ++i) {
        if (n % i == 0) return false;
    }
    return true;
}
int main() {
    cin >> t;
    while (t > 0) {
        cin >> a;
        if (BinBon(a)) cout << "YES" << endl;
        else {
            cout << "NO" << endl;
        }
        t--;
    }
}

Lời giải 2 :

#include <bits/stdc++.h>
using namespace std;
bool isPrime(int n) {
    if (n <= 1) return false;
    for (int i = 2; i*i <= n; i++)
        if (n % i == 0) return false;
    return true;
}
int max(int a, int b) {
    if (a > b) return a;
    return b;
}
bool isBinBon(string n) {
    int sum = 0, maxDigit = 0;
    for (char i: n) {
        sum = sum + (i - '0');
        maxDigit = max(maxDigit, i - '0');
    }
    return isPrime(sum*10 + maxDigit);
}
int main() {
    int t; string n;
    cin >> t;
    while (t--) {
        cin >> n;
        if (isBinBon(n)) cout << "YES";
        else cout << "NO";
        cout << '\n';
    }
    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 9

Lớp 9 - Là năm cuối ở cấp trung học cơ sở, chúng ta sắp phải bước vào một kỳ thi căng thẳng và sắp chia tay bạn bè, thầy cô. Áp lực từ kỳ vọng của phụ huynh và tương lai lên cấp 3 thật là lớn, nhưng hãy tin vào bản thân và giữ vững sự tự tin!

Nguồn :

sưu tập

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

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

Copyright © 2021 HOCTAPSGK