C ++中范围之和,范围为[L,R]的数字总数为Y

我们提供了两个数字START和END来定义一个数字范围。目标是找到[START,END]范围内所有数字之和等于给定数字Y的所有数字。

我们将通过从START到END遍历数字来做到这一点,对于每个数字,我们将使用while循环对数字的总和进行计数。如果该总和等于Y,则增加计数。

让我们通过示例来理解。

输入值 

START=10 END=20 Y=4

输出结果 

Numbers such that digit sum is equal to Y: 1

说明 

Number 13 has digit sum equal to 4.

输入值 

START=10 END=50 Y=5

输出结果 

Numbers such that digit sum is equal to Y: 5

说明 

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

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

  • 我们采用整数START,END,Y。

  • 函数digitSum(int start,int end,int y)返回具有digitsum = y的数字的计数

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

  • 将变量digsum设为0

  • 使用for循环遍历数字范围。我=开始我=结束

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

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

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

}

输出结果

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

Numbers such that digit sum is equal to Y: 15

以上是 C ++中范围之和,范围为[L,R]的数字总数为Y 的全部内容, 来源链接: utcz.com/z/331338.html

回到顶部