Giả sử chúng ta có một số nguyên dài. Chúng ta phải tìm xem độ chênh lệch giữa tổng các chữ số ở vị trí lẻ và tổng các chữ số ở vị trí chẵn có bằng 0 hay không. Các vị trí bắt đầu từ 0 (bên trái nhất).
Ví dụ, giả sử một số là 156486. Tổng vị trí lẻ là (5 + 4 + 6) = 15, và tổng vị trí chẵn là (1 + 6 + 8) = 15, nên chúng giống nhau.
Để giải quyết bài toán này, chúng ta có thể dùng hai cách khác nhau. Cách đầu tiên là duyệt từ đầu đến cuối và lấy tổng bằng cách thay đổi vị trí, sau đó lấy độ chênh lệch. Cách tiếp theo đơn giản và hiệu quả hơn. Nếu số chia hết cho 11, thì độ chênh lệch phải là 0. Nói cách khác, chúng ta có thể nói rằng nếu tổng các số ở vị trí lẻ và tổng các số ở vị trí chẵn bằng nhau, thì số đó chia hết cho 11.
Thuật toán
isDiffZero(n)
begin
if n is divisible by 11, then
return 1
else
return 0
end if
endVí dụ
#include<stdio.h>
long isDiffZero(int n) {
if(n % 11 == 0){
return 1;
} else {
return 0;
}
}
main() {
int n;
printf("Enter a number: ");
scanf("%d", &n);
if(isDiffZero(n)) {
printf("Difference is zero");
} else {
printf("Difference is non zero");
}
}Kết quả
Enter a number: 156486 Difference is zero