 
  Data Structure Data Structure
 Networking Networking
 RDBMS RDBMS
 Operating System Operating System
 Java Java
 MS Excel MS Excel
 iOS iOS
 HTML HTML
 CSS CSS
 Android Android
 Python Python
 C Programming C Programming
 C++ C++
 C# C#
 MongoDB MongoDB
 MySQL MySQL
 Javascript Javascript
 PHP PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Count of numbers from range[L, R] whose sum of digits is Y in C++
We are provided two numbers START and END to define a range of numbers.The goal is to find all the numbers in the range [START,END] which have sum of digits equal to a given number Y.
We will do this by traversing numbers from START to END and for each number we will count the sum of its digit using a while loop. If this sum is equal to Y, increment count.
Let’s understand with examples.
Input
START=10 END=20 Y=4
Output
Numbers such that digit sum is equal to Y: 1
Explanation
Number 13 has digit sum equal to 4.
Input
START=10 END=50 Y=5
Output
Numbers such that digit sum is equal to Y: 5
Explanation
Numbers 14, 23, 32, 41 and 50 have digit sum 5.
Approach used in the below program is as follows
- We take integers START, END, Y. 
- Function digitSum(int start, int end, int y) returns the count of numbers with digitsum=y 
- Take the initial variable count as 0 for such numbers. 
- Take variable digsum as 0 
- Traverse range of numbers using for loop. i=start to i=end 
- Now for each number num=i, using while loop check if number is >0. 
- calculate digsum+=num%10. Reduce num=num/10 to add the next digit. 
- At the end of the while, check if ( digsum == d ). If true increment count. 
- At the end of all loops count will have a total number which satisfies the condition. 
- Return the count as result. 
Example
#include <bits/stdc++.h> using namespace std; int digitSum(int start, int end, int y){    int count = 0;    int digsum = 0;    for (int i = start; i <= end; i++){       int num=i;       digsum=0;       while(num>0){          digsum+=num%10; //sum of digits          num=num/10;       }       if(digsum==y) //original number is i{          count++;          //cout<<i<<" ";       }    }    return count; } int main(){    int START = 100;    int END = 1000;    int Y = 5;    cout <<"Numbers such that digit sum is equal to Y: "<<digitSum(START,END,Y);    return 0; } Output
If we run the above code it will generate the following output −
Numbers such that digit sum is equal to Y: 15
