计算数字与数字总和之差大于C ++中特定值的数字

我们提供了两个数字N,它们定义了范围[1,N],而D则是差。目标是找到范围[1,N]中的所有数字,以使[数字-(其数字的总和) ]>D。我们将通过从1到N遍历数字进行此操作,对于每个数字,我们将使用while循环计算其数字总和。检查数字和计算出的数字总和之差是否大于D。

让我们通过示例来理解。

输入项 

N=15 D=5

输出结果 

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

说明 

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.

输入项 

N=20 D=10

输出结果 

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

说明 

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

以下程序中使用的方法如下

  • 我们取整数N和D。

  • 函数digitSum(int n,int d)接受变量N,D,并返回(num-digitsum)> d的数字计数。

  • 对于此类数字,将初始变量计数设为0。

  • 将变量digsum设为0

  • 使用for循环遍历数字范围。i = 1到i = n

  • 现在,对于每个数字num = i,使用while循环检查数字是否大于0。

  • 计算digsum + = num%10。减少num = num / 10以添加下一个数字。

  • 在片刻结束时,检查是否(i-digsum> 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;
}

输出结果

如果我们运行上面的代码,它将生成以下输出-

Numbers such that difference between number and its digit sum greater than specific value: 11
猜你喜欢