เราได้รับสองจำนวนเต็ม m และ n เป้าหมายคือการนับตัวเลข m ที่หารด้วย n ลงตัว
ถ้า m=1 ตัวเลขจะเป็น 0,1,2,3,4,5,6,7,8,9 และ n=3 แล้วจำนวนที่หารด้วย 3=0,3,6,9 นับ=4 ลงตัวพี>
มาทำความเข้าใจกับตัวอย่างกัน
ป้อนข้อมูล − m=2, n=9
ผลผลิต − จำนวนหลัก m หารด้วย n − 10
คำอธิบาย − ระหว่าง 10 ถึง 99 ตัวเลขที่หารด้วย 9 ลงตัวคือ −
18, 27, 36, 45, 54, 63, 72, 81, 90, 99
ป้อนข้อมูล ม=3, n=300
ผลผลิต − จำนวน m หลักหารด้วย n:3
คำอธิบาย − ระหว่าง 100 ถึง 999 ตัวเลขหารด้วย 300 ลงตัวคือ -
300, 600, 900
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
เราใช้จำนวนเต็ม m และ n
-
คำนวณตัวเลข m-1 ที่ใหญ่ที่สุดเป็น num1
-
คำนวณจำนวนหลัก m ที่ใหญ่ที่สุดเป็น num2
-
ฟังก์ชัน findCount(int n, int L, int R) รับ n และ range ( ระหว่าง num1 และ num2 ) เป็นอินพุตและส่งกลับตัวเลขทั้งหมดในช่วงนั้นซึ่งหารด้วย n ลงตัว
-
นับเริ่มต้นเป็น 0
-
เริ่มจาก i=L ถึง i=R ถ้า i%n==0, นับเพิ่มขึ้น
-
ผลตอบแทนนับเป็นผลลัพธ์
ตัวอย่าง
#include<bits/stdc++.h> using namespace std; // Returns count of m digit numbers having n // as divisor int findCount(int n, int L, int R){ int count=0; int i; for(int i=L;i<=R;i++){ if(i%n==0) { count++; } } return count; } int main(){ int M = 2, N = 9; int i; int num1 = 0; //largest m-1 digit no. for (i = 0; i < (M - 1); i++) num1 = (num1 * 10) + 9; int num2 = 0; //largest m digit no. for (i = 0; i < M; i++) num2 = (num2 * 10) + 9; cout<<"Count of M digit no.s divisible by N:"<<findCount(N,num1+1,num2); return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้:
Count of M digit no.s divisible by N:11