กำหนดจำนวนเต็ม A และ B และจำนวน X สองจำนวน เป้าหมายคือการหาจำนวนค่าที่ X สามารถมีได้ ดังนั้น A%X=B สำหรับสมการข้างบนนี้ ถ้า A==B มีค่าอนันต์ของ X ได้ ดังนั้นให้คืนค่า -1 ถ้า A B คืนค่าจำนวนตัวหารของ (AB) เป็นผลลัพธ์
ตัวอย่าง
อินพุต
A=5, B=2
ผลลัพธ์
นับค่าที่เป็นไปได้ทั้งหมดของ X โดยที่ A % X =B คือ 1
คำอธิบาย
<ก่อน>5%3=2. X คือ 3 ที่นี่อินพุต
A=10, B=10
ผลลัพธ์
นับค่าที่เป็นไปได้ทั้งหมดของ X โดยที่ A % X =B คือ -1
คำอธิบาย
ที่นี่ A==B ดังนั้นจึงมีคำตอบที่ไม่สิ้นสุด ดังนั้น −1 จึงถูกส่งกลับ
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้ −
ในแนวทางนี้ เราจะคำนวณตัวหารของ (A−B) โดยใช้ for loop จาก i=1 ถึง i*i<=(A−B) หากมีตัวใดตัวหนึ่งหารเต็ม (A−B) ให้อัปเดตการนับตามนั้น
-
ใช้จำนวนเต็ม A และ B เป็นอินพุต
-
ถ้า A
-
ถ้า A==B ให้พิมพ์ -1 เป็นผลลัพธ์
-
สำหรับ A>B ฟังก์ชัน possible_values(int A, int B) รับ A และ B และคืนค่าการนับค่าที่เป็นไปได้ทั้งหมดของ X เพื่อให้ A % X =B
-
นับเริ่มต้นเป็น 0 และ X=A−B.
-
สำรวจโดยใช้ for loop จาก i=1 ถึง i*i<(A−B) สำหรับการคำนวณตัวหารของ X
-
หากมี i หาร X ทั้งหมดแล้วให้ใช้ temp=i, temp_2=B-1 และถ้า i*i!=X ตั้งค่า temp_2 =X / i.
-
หาก temp> B และ temp_2>B ก็นับการเพิ่มขึ้น
-
เมื่อสิ้นสุดการวนซ้ำจะนับเป็นผลลัพธ์
ตัวอย่าง
#includeใช้เนมสเปซ std;int possible_values(int A, int B){ จำนวนเต็ม =0; int X =A - B; สำหรับ (int i =1; i * i <=A - B; i++){ if(X % i ==0){ int temp =i; int temp_2 =B - 1; ถ้า(i * i !=X){ temp_2 =X / i; } if(ชั่วคราว> B){ นับ++; } if(temp_2> B){ นับ++; } } } จำนวนการส่งคืน;}int main(){ int A =15, B =5; if(A ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
นับค่าที่เป็นไปได้ทั้งหมดของ X โดยที่ A % X =B คือ 1