สมมติว่าเรามีจำนวนเต็มยาวหนึ่งจำนวน เราต้องค้นหาว่าผลต่างระหว่างผลรวมของหลักตำแหน่งคี่กับผลรวมของตำแหน่งเลขคู่เป็น 0 หรือไม่ ตำแหน่งเริ่มต้นจาก 0 (ซ้ายสุด)
ตัวอย่างเช่น สมมติว่าตัวเลขคือ 156486 ผลรวมของตำแหน่งคี่คือ (5 + 4 + 6) =15 และผลรวมของตำแหน่งคู่คือ (1 + 6 + 8) =15 ดังนั้นจึงเหมือนกัน
เพื่อแก้ปัญหานี้ เราสามารถใช้สองวิธีที่แตกต่างกัน วิธีแรกคือการเดินทางผ่านแบบฟอร์มเริ่มจนจบและรับผลรวมโดยสลับตำแหน่งจากนั้นจึงได้ส่วนต่าง วิธีถัดไปนั้นง่ายกว่าและมีประสิทธิภาพ หากตัวเลขหารด้วย 11 ลงตัว ผลต่างต้องเป็น 0 ดังนั้นเราสามารถพูดได้ว่าถ้าผลรวมของเลขตำแหน่งคี่และผลรวมของตำแหน่งเลขคู่เท่ากัน ตัวเลขนั้นจะถูกหารด้วย 11
อัลกอริทึม
isDiffZero(n)
begin if n is divisible by 11, then return 1 else return 0 end if end
ตัวอย่าง
#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");
}
} ผลลัพธ์
Enter a number: 156486 Difference is zero