Trang chủ Tin Học Lớp 7 SUPER DIGIT (SUPERDIGIT.*) Ta định nghĩa 𝑆𝑢𝑝𝑒𝑟𝐷𝑖𝑔𝑖𝑡 của một số...

SUPER DIGIT (SUPERDIGIT.*) Ta định nghĩa 𝑆𝑢𝑝𝑒𝑟𝐷𝑖𝑔𝑖𝑡 của một số nguyên 𝑥 là: 1. 𝑥 nếu 𝑥 chỉ có một chữ số 2. 𝑆𝑢𝑝𝑒𝑟 𝐷𝑖𝑔𝑖𝑡 của tổng các c

Câu hỏi :

SUPER DIGIT (SUPERDIGIT.*) Ta định nghĩa 𝑆𝑢𝑝𝑒𝑟𝐷𝑖𝑔𝑖𝑡 của một số nguyên 𝑥 là: 1. 𝑥 nếu 𝑥 chỉ có một chữ số 2. 𝑆𝑢𝑝𝑒𝑟 𝐷𝑖𝑔𝑖𝑡 của tổng các chữ số của 𝑥 nếu 𝑥 có nhiều hơn một chữ số Ví dụ 𝑆𝑢𝑝𝑒𝑟𝐷𝑖𝑔𝑖𝑡 của 𝑥 = 9875 𝑆𝑢𝑝𝑒𝑟𝐷𝑖𝑔𝑖𝑡(9875) = 𝑆𝑢𝑝𝑒𝑟𝐷𝑖𝑔𝑖𝑡(9 + 8 + 7 + 5) = 𝑆𝑢𝑝𝑒𝑟𝐷𝑖𝑔𝑖𝑡(29) = = 𝑆𝑢𝑝𝑒𝑟𝐷𝑖𝑔𝑖𝑡(29) = 𝑆𝑢𝑝𝑒𝑟𝐷𝑖𝑔𝑖𝑡(2 + 9) = 𝑆𝑢𝑝𝑒𝑟𝐷𝑖𝑔𝑖𝑡(11) = = 𝑆𝑢𝑝𝑒𝑟𝐷𝑖𝑔𝑖𝑡(1 + 1) = 𝑆𝑢𝑝𝑒𝑟𝐷𝑖𝑔𝑖𝑡(2) = 2 Bạn được cho 2 số nguyên 𝑛 và 𝑘, gọi 𝑝 là số nguyên được tạo thành bằng cách ghép 𝑘 lần liên tiếp số 𝑛 với nhau. Ví dụ 𝑛 = 9875 và 𝑘 = 4 thì 𝑝 = 𝟗𝟖𝟕𝟓98759𝟖𝟕𝟓9875 Yêu cầu: Hãy tìm 𝑆𝑢𝑝𝑒𝑟𝐷𝑖𝑔𝑖𝑡 của số 𝑝. Dữ liệu vào: hai số nguyên dương 𝑛, 𝑘 (1 𝑛 10ଵ଴଴଴଴଴; 1 𝑘 10ହ) Kết quả: một số nguyên duy nhất là giá trị 𝑆𝑢𝑝𝑒𝑟𝐷𝑖𝑔𝑖𝑡 của số 𝑝. C++

Lời giải 1 :

Ý tưởng

Nói đến tổng các chữ số, bạn có nhớ đến bài toán quen thuộc nào không?

Đúng vậy, đó là tính chia dư cho 9

Ta có: $\overline{a_1a_2\ldots a_n} \equiv a_1 + a_2 + \ldots + a_n (mod $ $9)$

Quay trở lại bài toán, nếu ta cứ áp dụng hàm SuperDigit(x) này như bài toán thì chẳng phải số dư của $x$ khi chia cho 9 không đổi sao?

Mà hàm SuperDigit luôn trả về kết quả có 1 chữ số

=> SuperDigit(x) = x mod 9

Mà SuperDigit(x) lại chỉ có thể bằng 0 khi x = 0 (do tổng các chữ số của x > 0 luôn lớn hơn 0 qua các bước tính toán)

Vậy kết luận:

$SuperDigit(x) = $ \(\left[ \begin{array}{l} x\%9 \textbf{ nếu } x \% 9 \neq 0\\x=9 \textbf{ nếu } x \% 9 = 0 \textbf{ và } x \neq 0\\x=0 \textbf{ nếu } x = 0\end{array} \right.\)

Để ý thêm 1 điều nữa: Ta chỉ cần quan tâm tới kết quả, không phải số nhập vào. Vì vậy, ta tính tổng các chữ số của số nhập vào ngay rồi mới áp dụng phép SuperDigit như trên

Code

#include <iostream>

using namespace std;

int main(){

    string n; cin >> n;

    int k; cin >> k;

    long long sumDigits = 0;

    for(char c: n) sumDigits += (c - '0');

    sumDigits *= k;

    if(sumDigits % 9 == 0){

        if(sumDigits == 0) cout << 0;

        else cout << 9;

    }else cout << (sumDigits % 9);

    return 0;

}

Thảo luận

-- nó sai bạn oi
-- Xin lỗi bạn, lỗi của mình. Mình chưa test code nên dẫn đến lỗi sai ngớ ngẩn như vậy.

Bạn có biết?

Tin học, tiếng Anh: informatics, tiếng Pháp: informatique, 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 (ảo). Với cách hiểu hiện nay, 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.

Nguồn : Wikipedia - Bách khoa toàn thư

Tâm sự 7

Lớp 7 - Năm thứ hai ở cấp trung học cơ sở, một cuồng quay mới lại đến vẫn bước tiếp trên đường đời học sinh. Học tập vẫn là nhiệm vụ chính!

Nguồn : ADMIN :))

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

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

Copyright © 2021 HOCTAPSGK