Giúp đỡ lấy tổng là một chữ số của chữ số có nhiều chữ số trong 1 ô Excel!

Liên hệ QC
Vâng bác, em hiểu rồi. Rút kinh nghiệm từ từ, thói quen xưng hô nên lúc nhớ lúc không bác ạ.
 
Nhưng mà chắc vẫn hơi khó hiểu, để mình nói lại xem dễ hiểu hơn không:
Giả sử có số bất kỳ abcd
Ta luôn có: abcd = a*1000 + b*100 + c*10 + d
mà 10,100,1000 thì luôn thể hiện bằng dạng 9+1,hay 99+1,...
mà 9, 99, 999 luôn chia hết cho 9
vì thế khi lấy phép dư với 9, chỉ còn lại a + b + c + d
Nếu a + b + c + d = ef vẫn lớn hơn 9 thì ef lại được biểu diễn thành e*10 + f rồi lại lại lặp kiểu đệ quy như trên. Cuối cùng nó cũng ra tổng các con số thôi
Em xin giải thích thêm về công thức của anh:
CẤU TRÚC HÀM MOD :
=MOD(số bị chia, số chia)=số dư
1. Nếu số bị chia < số chia => số dư = số bị chia
2. Nếu số bị chia > số chia

+ Số bị chia KHÔNG chia hết cho số chia
- Tại sao ta phải dùng SỐ CHIA là 9, mà không phải là 2,3,4,5,6,7,8 ?
- Ta đã biết rằng 1 số chia hết cho 9 thì tổng các chữ số của 1 số đó phải chia hết cho 9
- Giả sử 1 số có 3 chữ số ABC, ta chuyển đổi thành cơ số 10 như sau : 100*A+10*B+C
- Như vậy số có 3 chữ số ABC kia phải có tổng (A+B+C) chia hết cho 9. Nếu tổng 3 số (A+B+C) KHÔNG chia hết cho 9 thì số dư sẽ là tổng các số này
Nếu A+B+C > 9 thì số dư sẽ là A+B+C-9
+ Nếu số bị chia CHIA HẾT số chia => số dư = 0 ( Trường hợp này trong công thức số bị chia phải trừ 1, sau khi chia cho 9 sẽ cộng thêm 1 )

Như ví dụ trên :
=MOD(123-1,9)+1=1+2+3=6
=MOD(109-1,9)+1=1+0+9-9=1
 
Mọi số đều được viết dưới dạng tổng các chữ số của nó cộng với một số chia hết cho 9.
Ví dụ:
Ta có: 594 = 5*100 + 9*10 + 4
= 5*(99+1) + 9*(9+1) + 4
= 5*11*9 + 5 + 9*9 + 9 + 4
= (5 + 9 + 4) + ( 5*11*9 + 9*9 )
= 18 + ( 5*11*9 + 9*9 )
= 1*(9+1) + 8 + ( 5*11*9 + 9*9 )
= 1 + 8 + (1*9 + 5*11*9 + 9*9 )
= 9 + (1*9 + 5*11*9 + 9*9 )
= (tổng các chữ số) + (số chia hết cho 9)
Vậy mod số này với 9 = 0
Để loại bỏ 0, không chạy từ 0-8 mà từ 1-9 thì số đó phải trừ 1, lấy phần dư mới cộng 1 sau

Hơi khó hiểu nhỉ :D
...
Cách chứng mình:
Theo toán Số Học (lớp 9-11, tùy theo thế hệ học của bạn)
ab = 10a + b = 9a + a + b ==> đem chia cho 9 thì số dư là a+b
Vì vậy, số dư của số ab khi đem chia cho 9 là tổng a+b
Đem thuật toán diễn giải quy nạp (induction), bạn chứng mình rằng nó đúng cho i = 1, và nếu đúng cho i thì cũng đúng cho i+1, cuối cùng bạn có nó đứng cho tất cả n>=1

Đây là bài toán Số Học (Arithmetic). Người nào đem so sánh với bài toán tính hệ (radix) thuôc về Đại Số (Algebra) là so sánh khập khiễng, không có căn bản toán.
 
Lần chỉnh sửa cuối:
Lần chỉnh sửa cuối:
Do chứng minh hôm trước của tôi thiếu điều kiện đủ để công thức đúng. Nên tôi đã chứng minh lại bên dưới.

Chứng minh công thức P₍ₛ₎ = (s - 1) ≡ 9 + 1 tìm được tổng là một chữ số của số nguyên lớn hơn 0 có một hoặc nhiều chữ số.
(≡) là dấu chia lấy dư


Ví dụ:
Với số 26876:
Tính tổng: 2+6+8+7+6 = 29 = 2+9 = 11 = 1+1 = 2
Và tính với công thức (26876 - 1) ≡ 9 + 1 kết quả cũng là 2
Cần chứng minh công thức luôn đúng với mọi số nguyên lớn hơn 0.

Chứng minh:


Gọi A là tập số nguyên {1,2,...,9}

Gọi P₍ₛ₎ là tổng là một chữ số của số có nhiều chữ số.
Dựa vào công thức P₍ₛ₎ = (s-1) ≡ 9 + 1:

Với s > 0, thì s - 1 luôn luôn >= 0, nên P(s) € A

Gọi a1, a2, a3, ..., an là các chữ số trong một số, giá trị thuộc tập {0,1,2,...,9}.
Gọi s là số có 1 hoặc nhiều chữ số.
---------------------------------------------------------------------------------------------------
Ta có công thức tổng quát của s:

s = a1*10⁰ + a2*10¹ + a3*10² + ... + an*10ⁿ⁻¹
<=> s = a1 + a2*10 + a3*10² + ... + an*10ⁿ⁻¹
<=> s = a1 + a2 + a2*(10¹-1) + a3 + a3*(10²-1) + ... + an + an*(10ⁿ⁻¹-1)
<=> s = a1 + a2 + a3 + ... + an + a2*9 + a3*99 + ... + an*(10ⁿ⁻¹-1)

Gọi b là giá trị biểu thức a2*9 + a3*99 + ... + an*(10ⁿ⁻¹-1), dựa vào dấu hiệu chia hết cho 9 thì b luôn luôn chia hết cho 9.

---------------------------------------------------------------------------------------------------
Gọi Cₙ là tổng của n các số, thì các giá trị lần lượt nhận được là:


CₙTổng các sốGiá trị
Ca10 → 1∗10−1 = 9∗1
Ca1 + a20 → 2∗10−2= 9∗2
Ca1 + a2 + a30 → 3∗10−3= 9∗3
Ca1 + a2 + a3 + ... + an0 → n∗10−n= 9∗n


Cₙ = a1 + a2 + a3 + ... + an
<=> Cₙ = a1 + a2*10 + a3*10² + ... + an*10ⁿ⁻¹ - a2*9 - a3*99 - ... - an*(10ⁿ⁻¹-1)
<=> Cₙ = s - b
Rút ra được kết luận [1]: khi s mất đi b giá trị thì ta nhận được 1 tổng các chữ số

[2] Khi n = 1, thì Cₙ € A, s = Cₙ, P₍ₛ₎ = (s-1) ≡ 9 + 1 luôn đúng.

---------------------------------------------------------------------------------------------------
Với giá trị s:

screenshot.png
Gọi Zₘ là tổng của Cₙ biểu thức của giá trị s, để có được [3] giá trị Zₘ € A thì:
s = b + bZ₀ + bZ₁ + bZ₂ + ... + bZₘ₋₁ + Z
Gọi B là giá trị biểu thức b + bZ₀ + bZ₁ + bZ₂ + ... + bZₘ₋₁ thì:
s = Zₘ + B

Dựa vào [1]:

P₍ₛ₎ = Zₘ + B - B
<=> P₍ₛ₎ = Zₘ + B ≡ 9 (Vì B - B = 0 và B ≡ 9 = 0)
Dựa vào [2] [3]:
P₍ₛ₎ = (Zₘ-1) ≡ 9 + 1 + B ≡ 9
<=> P₍ₛ₎ = (Zₘ + B - 1) ≡ 9 + 1
<=> P₍ₛ₎ = (s - 1) ≡ 9 + 1
---------------------------------------------------------------------------------------------------
Kết Luận:
Công thức P₍ₛ₎ = (s - 1) ≡ 9 + 1 tìm được tổng là một chữ số của số nguyên lớn hơn 0 có một hoặc nhiều chữ số.
 
Lần chỉnh sửa cuối:
Do chứng minh hôm trước của tôi thiếu điều kiện đủ để công thức đúng. Nên tôi đã chứng minh lại bên dưới.

Chứng minh công thức P₍ₛ₎ = (s - 1) ≡ 9 + 1 tìm được tổng là một chữ số của số nguyên lớn hơn 0 có một hoặc nhiều chữ số.

Chứng minh:

(≡) là dấu chia lấy dư

Gọi A là tập số nguyên {1,2,...,9}

Gọi P₍ₛ₎ là tổng là một chữ số của số có nhiều chữ số.
Dựa vào công thức P₍ₛ₎ = (s-1) ≡ 9 + 1:

Với s > 0, thì s - 1 luôn luôn >= 0, nên P(s) € A

Gọi a1, a2, a3, ..., an là các chữ số trong một số, giá trị thuộc tập {0,1,2,...,9}.
Gọi s là số có 1 hoặc nhiều chữ số.
---------------------------------------------------------------------------------------------------
Ta có công thức tổng quát của s:

s = a1*10⁰ + a2*10¹ + a3*10² + ... + an*10ⁿ⁻¹
<=> s = a1 + a2*10 + a3*10² + ... + an*10ⁿ⁻¹
<=> s = a1 + a2 + a2*(10¹-1) + a3 + a3*(10²-1) + ... + an + an*(10ⁿ⁻¹-1)
<=> s = a1 + a2 + a3 + ... + an + a2*9 + a3*99 + ... + an*(10ⁿ⁻¹-1)

Gọi b là giá trị biểu thức a2*9 + a3*99 + ... + an*(10ⁿ⁻¹-1), dựa vào dấu hiệu chia hết cho 9 thì b luôn luôn chia hết cho 9.

---------------------------------------------------------------------------------------------------
Gọi Cₙ là tổng của n các số, thì các giá trị lần lượt nhận được là:


CₙTổng các sốGiá trị
Ca10 → 1∗10−1 = 9∗1
Ca1 + a20 → 2∗10−2= 9∗2
Ca1 + a2 + a30 → 3∗10−3= 9∗3
Ca1 + a2 + a3 + ... + an0 → n∗10−n= 9∗n


Cₙ = a1 + a2 + a3 + ... + an
<=> Cₙ = a1 + a2*10 + a3*10² + ... + an*10ⁿ⁻¹ - a2*9 - a3*99 - ... - an*(10ⁿ⁻¹-1)
<=> Cₙ = s - b
Rút ra được kết luận [1]: khi s mất đi b giá trị thì ta nhận được 1 tổng các chữ số

[2] Khi n = 1, thì Cₙ € A, s = Cₙ, P₍ₛ₎ = (s-1) ≡ 9 + 1 luôn đúng.

---------------------------------------------------------------------------------------------------
Với giá trị s:

View attachment 283398
Gọi Zₘ là tổng của Cₙ biểu thức của giá trị s, để có được [3] giá trị Zₘ € A thì:
s = b + bZ₀ + bZ₁ + bZ₂ + ... + bZₘ₋₁ + Z
Gọi B là giá trị biểu thức b + bZ₀ + bZ₁ + bZ₂ + ... + bZₘ₋₁ thì:
s = Zₘ + B

Dựa vào [1]:

P₍ₛ₎ = Zₘ + B - B
<=> P₍ₛ₎ = Zₘ + B ≡ 9 (Vì B - B = 0 và B ≡ 9 = 0)
Dựa vào [2] [3]:
P₍ₛ₎ = (Zₘ-1) ≡ 9 + 1 + B ≡ 9
<=> P₍ₛ₎ = (Zₘ + B - 1) ≡ 9 + 1
<=> P₍ₛ₎ = (s - 1) ≡ 9 + 1
---------------------------------------------------------------------------------------------------
Kết Luận:
Công thức P₍ₛ₎ = (s - 1) ≡ 9 + 1 tìm được tổng là một chữ số của số nguyên lớn hơn 0 có một hoặc nhiều chữ số.
Rất rõ ràng chi tiết bác ạ. Nhưng em không giỏi toán nên vẫn thích cách thay số trực tiếp vào hơn.

PS: Bác có những ứng dụng excel hay phết, tải về nghịch cả tháng chưa ngộ ra hết được code. :p :p :p
 
Web KT

Bài viết mới nhất

Back
Top Bottom