เราได้รับตัวเลข A และ B สองตัว นอกจากนี้ยังมีตัวเลข START และ END สองตัวเพื่อกำหนดช่วงของตัวเลข กระเบื้อง Ath มีสีขาวและกระเบื้อง Bth มีสีดำ หากกระเบื้องถูกทาทั้งขาวดำ กระเบื้องจะกลายเป็นสีเทา เป้าหมายคือการหาจำนวนกระเบื้องสีเทาทั้งหมด .
เราจะทำสิ่งนี้โดยข้ามผ่านตัวเลขจาก START ถึง END และสำหรับแต่ละหมายเลข เราจะตรวจสอบว่าตัวเลขนั้นทวีคูณของทั้ง A และ B หรือไม่ ถ้าใช่ ให้นับการเพิ่มขึ้น
มาทำความเข้าใจกับตัวอย่างกัน
ป้อนข้อมูล
START=10 END=20 A=3 B=6
ผลผลิต
Common multiples of A and B ( grey tiles ): 2
คำอธิบาย
Numbers 12, 18 are multiples of 3 and 6.
ป้อนข้อมูล
START=1 END=100 A=10 B=11
ผลผลิต
Common multiples of A and B ( grey tiles ): 0
คำอธิบาย
No common multiple of 10 and 11 in range.
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
เราใช้จำนวนเต็ม START และ END เป็นตัวแปรช่วง
-
เราใช้ A และ B เป็นสองตัวแปร
-
ฟังก์ชัน countGrey(int start, int end, int a, int b) รับตัวแปรช่วง, a, b และคืนค่าการนับทวีคูณของ a และ b
-
ใช้ตัวแปรเริ่มต้นนับเป็น 0 สำหรับตัวเลขดังกล่าว
-
ข้ามช่วงของตัวเลขโดยใช้การวนซ้ำ i=start to i=end
-
ถ้า i%a==0 &&i%b==0 จากนั้น 'i' จะเป็นผลคูณของทั้ง a และ b
-
เมื่อสิ้นสุดการวนซ้ำทั้งหมดจะมีจำนวนรวมที่เป็นทวีคูณของ 'a' และ 'b'
-
คืนค่าการนับเป็นผลลัพธ์
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; int countGrey(int start, int end, int a, int b){ int count = 0; for (int i = start; i <= end; i++){ if(i%a==0 && i%b==0) //tile is grey { count++; } } return count; } int main(){ int START =10, END = 30; int A=4, B=3; cout <<"Common multiples of A and B ( grey tiles ): "<< countGrey(START,END, A, B); return 0; }
ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Common multiples of A and B ( grey tiles ): 2