समस्या विवरण
हमें एक संख्या N दी गई है। उन अंकों की गिनती करनी है जो संख्या N को विभाजित (divide) करते हैं।
महत्वपूर्ण बिंदु
- यदि अंक 0 है, तो उसे अनदेखा करें (0 से विभाजन अपरिभाषित है)।
- यदि कोई अंक दो बार आता है और विभाजित करता है, तो दोनों बार गिना जाएगा।
उदाहरण
इनपुट: 2240
आउटपुट: 3
अंक: 2, 2, 4, 0। 2, 2, 4 से 2240 विभाज्य है। 0 को अनदेखा करें।
इनपुट: 755
आउटपुट: 2
अंक: 7, 5, 5। 5, 5 से 755 विभाज्य है।
समाधान दृष्टिकोण
- संख्या को अंकों में तोड़ें (10 से विभाजित करके)।
- प्रत्येक अंक के लिए (यदि > 0), जांचें कि क्या N उस अंक से विभाज्य है।
- यदि हां, तो गिनती बढ़ाएं।
कार्यकारी प्रोग्राम
#include <bits/stdc++.h>
using namespace std;
int countDividingDigits(int num) {
int original = num;
int count = 0, rem;
while (num > 0) {
rem = num % 10;
if (rem > 0 && original % rem == 0) {
count++;
}
num /= 10;
}
return count;
}
int main() {
int num = 2240;
cout << "विभाजित करने वाले अंकों की गिनती: " << countDividingDigits(num);
return 0;
}
आउटपुट
विभाजित करने वाले अंकों की गिनती: 3