C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

数値とその桁の合計の差がC++の特定の値より大きい数値をカウントします


範囲[1、N]を定義する2つの数値Nと差であるDが提供されます。目標は、[数値-(桁の合計) ]> 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

  1. N以下で、C++の合計がSである最小数

    問題の説明 1からNまでのN個の数とS個の数が与えられます。タスクは、合計してSを与える最小数の数を出力することです 例 n=7およびs=10の場合、最低2つの数字が必要です (9, 1) (8, 2) (7, 3) (6, 4) アルゴリズム Answer can be calculated using below formula (S/N) + 1 if { S %N > 0} 例 #include <bits/stdc++.h> using namespace std; int getMinNumbers(int n, int s) {    r

  2. C++で積と和の差が与えられたN個の整数を検索します

    2つの整数NとDがあるとします。N個の整数のセットを見つける必要があります。ここで、それらの合計と積の差はDと同じです。N=3と仮定します。 D =5の場合、出力は1、2、8になります。ここで、合計は1 + 2 + 8 =11で、積は1 * 2 * 8 =16で、16と11の差は5です。 この問題を解決する必要があります。 1つのトリッキーな方法を使用します。ここでは、N–2の1の数、1つの2、残りの1つの数N + Dを見つけようとします。したがって、合計、積、および差は-になります。 合計=(N – 2)* 1 + 2 +(N + D)=2 * N + D 製品=(N – 2)* 1