Computer >> Máy Tính >  >> Lập trình >> C ++

Đếm số từ phạm vi [L, R] có tổng các chữ số là Y trong C ++

Chúng tôi được cung cấp hai số START và END để xác định một dải số. Mục tiêu là tìm tất cả các số trong dải [START, END] có tổng các chữ số bằng một số Y.

cho trước.

Chúng ta sẽ thực hiện việc này bằng cách duyệt các số từ START đến END và đối với mỗi số, chúng ta sẽ đếm tổng các chữ số của nó bằng cách sử dụng một vòng lặp while. Nếu tổng này bằng Y, số gia tăng.

Hãy cùng hiểu với các ví dụ.

Đầu vào

START=10 END=20 Y=4

Đầu ra

Numbers such that digit sum is equal to Y: 1

Giải thích

Number 13 has digit sum equal to 4.

Đầu vào

START=10 END=50 Y=5

Đầu ra

Numbers such that digit sum is equal to Y: 5

Giải thích

Numbers 14, 23, 32, 41 and 50 have digit sum 5.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Chúng tôi lấy các số nguyên START, END, Y.

  • Hàm digitSum (int start, int end, int y) trả về tổng số các số có chữ số có chữ số là digitum =y

  • Lấy số lượng biến ban đầu là 0 cho những số như vậy.

  • Lấy digsum biến đổi là 0

  • Dải số theo chiều ngang bằng cách sử dụng vòng lặp for. i =start to i =end

  • Bây giờ đối với mỗi số num =i, sử dụng vòng lặp while kiểm tra xem số có> 0 hay không.

  • tính toán digsum + =num% 10. Giảm num =num / 10 để thêm chữ số tiếp theo.

  • Vào cuối thời gian, hãy kiểm tra xem (digsum ==d). Nếu số gia tăng đúng.

  • Ở cuối tất cả các số vòng lặp sẽ có tổng số thỏa mãn điều kiện.

  • Trả về kết quả là số lượng.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra kết quả sau -

Numbers such that digit sum is equal to Y: 15