เราได้ตัวเลขมา สมมุติว่า N และภารกิจคือการหาจำนวนหลักเหล่านั้นในตัวเลขที่หารจำนวน N
ข้อควรจำ
-
หากตัวเลขเป็น 0 ก็ควรเพิกเฉยซึ่งหมายความว่าจำนวนจะไม่เพิ่มขึ้นเป็น 0
-
หากตัวเลขปรากฏสองครั้งและหารตัวเลข การนับจะขึ้นอยู่กับการเกิดหลัก ตัวอย่างเช่น เราให้ตัวเลข 2240 และในตัวเลขนี้ทุกหลักยกเว้น 0 จะหารตัวเลขและ 2 เกิดขึ้นสองครั้ง จากนั้นนับเป็น 2 สำหรับหลัก 2
ป้อนข้อมูล − หมายเลข =2240
ผลผลิต − นับเป็น 3
คำอธิบาย − แบ่งตัวเลขออกเป็นหลัก ๆ แล้วจะเป็น 2, 2, 4, 0 ตอนนี้ตรวจสอบว่า 2 หาร 2240 หรือไม่ ถ้าใช่ ให้เพิ่มจำนวนอื่นย้ายไปหลักถัดไป ในหมายเลขนี้ 2, 2, 4 หารหลัก 2240 ให้นับ จะเป็น 3 และละเว้นเลข 0 ทุกกรณี
ป้อนข้อมูล − ตัวเลข =755
ผลผลิต − นับเป็น 2
คำอธิบาย − แบ่งตัวเลขออกเป็นหลัก ๆ แล้วจะเป็น 7, 5, 5 ทีนี้ลองเช็คดูว่า 7 หาร 755 ไหม ถ้าใช่แล้วให้เพิ่มจำนวนอื่นย้ายไปหลักถัดไป ในตัวเลขนี้ 5, 5 หารหลัก 755 ดังนั้นการนับจะเป็น 2 และ ละเว้นเลข 0 ทุกกรณี
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
ใส่ตัวเลขในตัวแปรจำนวนเต็ม สมมุติว่า num
-
เริ่มวนซ้ำจนกว่า num จะมากกว่า 0
-
ภายในลูป แบ่งตัวเลขเป็นตัวเลขและเก็บผลลัพธ์ไว้ในตัวแปร สมมุติว่า rem
-
ตรวจสอบว่า rem หารตัวเลขหรือไม่ ถ้าใช่ ให้เพิ่มค่าของตัวแปรการนับขึ้น 1 และหากไม่ใช่ อย่าเพิ่งเพิ่มค่าของตัวแปรการนับ
-
และคำสั่งตรวจสอบนี้จะถูกนำไปใช้เมื่อ rem มากกว่า 0 เนื่องจากเราต้องละเว้น 0
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; int count(int num){ int a=num; int count=0,rem; while(a>0){ rem=a%10; if(rem > 0){ if(num%rem==0){ count++; } } a=a/10; } return count; } int main(){ int num = 2240; cout<<"Count of digits in given number "<<num<<" which divide N are: "<<count(num); return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น เราจะได้ผลลัพธ์ต่อไปนี้ -
Count of digits in given number 2240 which divide N are: 3