เราได้รับตัวเลขสองตัว num_1 และ num_2 เป้าหมายคือนับจำนวนการยืม (carry operations) ที่ต้องใช้ถ้าบวกตัวเลขทั้งสอง ถ้าตัวเลขคือ 123 และ 157 การยืมจะเป็น 1 ครั้ง (7+3=10, 1+2+5=8, 1+1=2)
มาดูตัวอย่าง
อินพุต − num_1=432 num_2=638
เอาต์พุต − จำนวนการยืมเมื่อบวกสองตัวเลข คือ 2
คำอธิบาย − จากขวาไปซ้าย บวกตัวเลขและนับการยืม −
(2+8=10, ยืม 1) count=1, (1+3+3=7, ยืม 0) count=1, (4+6=10, ยืม 1) count=2
อินพุต − num_1=9999 num_2=111
เอาต์พุต − จำนวนการยืมเมื่อบวกสองตัวเลข คือ 4
คำอธิบาย − จากขวาไปซ้าย บวกตัวเลขและนับการยืม −
(9+1=10, ยืม 1) count=1, (1+9+1=11, ยืม 1) count=2, (1+9+1=11, ยืม 1) count=3, (1+9=10, ยืม 1) count=4
แนวทางที่ใช้ในโปรแกรม
เราจะแปลงตัวเลขทั้งสองเป็นสตริง เริ่มเดินทางสตริงจากท้าย แปลงตัวอักษรเป็นจำนวนเต็ม บวกทั้งสองและการยืมก่อนหน้า (0 สำหรับรอบแรก) ถ้าค่า >=10 กำหนดการยืมเป็น 1 ถ้าการยืมเป็น 1 เพิ่ม count ของการยืม
- รับตัวเลขสองตัวเป็น
num_1และnum_2 - ฟังก์ชัน
carry_add_two_numbers(num_1, num_2)รับตัวเลขทั้งสอง คืนจำนวนการยืมเมื่อบวกทั้งสอง - แปลงตัวเลขทั้งสองเป็นสตริงด้วย
to_string(x)เก็บในstr_1และstr_2 - หาความยาวทั้งสองสตริงด้วย
length()เป็นlength_str_1และlength_str_2 - กำหนด
countเริ่มต้น 0 และcarryเริ่มต้น 0 - ลูป while ทั้งสองความยาวไม่เป็นศูนย์
- แปลงจากตัวอักษรท้ายสุดเป็นจำนวนเต็ม เก็บในตัวแปร
iและj - ลดความยาวทั้งสองสตริง
- ตัวแปรบวก
add = i + j + carry - ถ้า
add >= 10เพิ่มcount(เพราะเป็นการยืม) และกำหนดcarry=1มิฉะนั้นกำหนดcarry=0สำหรับรอบต่อไป - ท้ายสุดของการวนซ้ำทั้งหมด
countจะมีจำนวนการยืมทั้งหมด - คืน
count
ตัวอย่างโค้ด C++
#include <bits/stdc++.h>
using namespace std;
int carry_add_two_numbers(int num_1, int num_2){
string str_1 = to_string(num_1);
int length_str_1 = str_1.length();
string str_2 = to_string(num_2);
int length_str_2 = str_2.length();
int count = 0, carr = 0;
while(length_str_1 != 0 || length_str_2 != 0){
int i = 0, j = 0;
if (length_str_1 > 0){
i = str_1[length_str_1 - 1] - '0';
length_str_1--;
}
if (length_str_2 > 0){
j = str_2[length_str_2 - 1] - '0';
length_str_2--;
}
int add = i + j + carr;
if (add >= 10){
carr = 1;
count++;
} else {
carr = 0;
}
}
return count;
}
int main(){
int num_1 = 234578;
int num_2 = 1234;
int count = carry_add_two_numbers(num_1, num_2);
cout<<"Count of number of carry operations required to add two numbers are: "<<count;
return 0;
}
เอาต์พุต
หากรันโค้ดด้านบนจะได้ผลลัพธ์ดังนี้ −
Count of number of carry operations required to add two numbers are: 2