Ý 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;
}
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ư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 :))Xem thêm tại https://loigiaisgk.com/cau-hoi or https://giaibtsgk.com/cau-hoi
Copyright © 2021 HOCTAPSGK