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

Đếm số có sự khác biệt giữa số và tổng chữ số của nó lớn hơn giá trị cụ thể trong C ++

Chúng tôi được cung cấp hai số N xác định một phạm vi [1, N] và D là một hiệu số. Mục tiêu là tìm tất cả các số trong phạm vi [1, N] sao cho [số - (tổng các chữ số của nó) ]> D. Chúng ta sẽ thực hiện việc này bằng cách chuyển ngang các số từ 1 đến N và đối với mỗi số, chúng ta sẽ tính tổng các chữ số của nó bằng vòng lặp while. Kiểm tra xem số và tổng chữ số được tính có chênh lệch nhiều hơn D.

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

Đầu vào

N=15 D=5

Đầu ra

Numbers such that difference b/w no. and its digit sum greater than value D: 6

Giải thích

Numbers 10, 11, 12, 13, 14, 15 satisfy the condition. ( 10-1, 11-2, 12-3, 13-4, 14-5, 15-6 ) all differences are 9 which is greater than 5.

Đầu vào

N=20 D=10

Đầu ra

Only 20 satisfies the condition. 20-2=18 > 10.

Giải thích

This is list of numbers divisible by all non-zero digits : 100 101 102 104 105 110 111 112 115 120 122 124 126 128 132 135 140 144 150 155 162 168 175 184 200

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 N và D.

  • Hàm digitSum (int n, int d) nhận các biến N, D và trả về tổng số các số có (num-digitum)> d.

  • 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 =1 đến i =n

  • 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 (i - 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 n, int d){
   int count = 0;
   int digsum = 0;
   for (int i = 1; i <= n; i++){
      int num=i;
      digsum=0;
      while(num>0){
         digsum+=num%10; //sum of digits
         num=num/10;
      }
      if(i-digsum>d) //original number is i {
         count++;
         //cout<<i<<" ";
      }
   }
   return count;
}
int main(){
   int N = 20;
   int D = 8;
   cout <<"Numbers such that difference between number and its digit sum greater than specific value: "<<digitSum(N,D);
   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 difference between number and its digit sum greater than specific value: 11