समस्या विवरण
हमें दो संख्याएँ num_1 और num_2 दी गई हैं। लक्ष्य उन्हें जोड़ते समय होने वाली कैरी संक्रियाओं की संख्या गिनना है।
उदाहरण
इनपुट: num_1=432, num_2=638
आउटपुट: 2
व्याख्या: दाएँ से बाएँ: 2+8=10 (कैरी 1), 3+3+1=7 (कैरी 0), 4+6=10 (कैरी 1) — कुल 2 कैरी
इनपुट: num_1=9999, num_2=111
आउटपुट: 4
व्याख्या: सभी चार स्थितियों पर कैरी उत्पन्न होती है।
दृष्टिकोण
दोनों संख्याओं को स्ट्रिंग में बदलें। अंत से पार करें। प्रत्येक अंक को पूर्णांक में बदलें, पिछली कैरी के साथ जोड़ें। यदि योग ≥ 10 तो कैरी=1 और गणना बढ़ाएँ, अन्यथा कैरी=0।
एल्गोरिदम
- दोनों संख्याओं को स्ट्रिंग में बदलें
- प्रारंभिक
count=0, carry=0 - जब तक दोनों स्ट्रिंग्स की लंबाई > 0:
- अंतिम अंक
i, jनिकालें, लंबाई घटाएँ sum = i + j + carry- यदि
sum >= 10:carry=1, count++ - अन्यथा:
carry=0
- अंतिम अंक
countलौटाएँ
C++ कार्यान्वयन
#include <bits/stdc++.h>
using namespace std;
int carry_add_two_numbers(int num_1, int num_2) {
string s1 = to_string(num_1);
string s2 = to_string(num_2);
int len1 = s1.length(), len2 = s2.length();
int count = 0, carry = 0;
while (len1 > 0 || len2 > 0) {
int d1 = 0, d2 = 0;
if (len1 > 0) d1 = s1[--len1] - '0';
if (len2 > 0) d2 = s2[--len2] - '0';
int sum = d1 + d2 + carry;
if (sum >= 10) { carry = 1; count++; }
else carry = 0;
}
return count;
}
int main() {
int num_1 = 234578, num_2 = 1234;
cout << "Count: " << carry_add_two_numbers(num_1, num_2);
return 0;
}
आउटपुट
Count: 2