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

C++で数字kまたはkで割り切れる数字を含むn番目の数値を検索します


2つの正の整数nとkが与えられ、数字kを含むかkで割り切れるn番目の数を見つける必要があります。 kは[2から9]の範囲になります。したがって、nとkがそれぞれ15と3の場合、出力は33になります。数値として[3、6、9、12、13、15、18、21、23、24、27、30、31、33]各要素に数字k=3またはkによる除算が含まれ、このn番目の数値が33である数値。したがって、出力は33です。

kとkの倍数を含む各数値を確認し、n番目の要素が得られるまで数えます。

#include<iostream>
using namespace std;
bool hasDigit(int n, int k) {
   while (n > 0) {
      int rem = n % 10;
      if (rem == k)
      return true;
      n = n / 10;
   }
   return false;
}
int countNumbers(int n, int k) {
   for (int i = k + 1, count = 1; count < n; i++) {
      if (hasDigit(i, k) || (i % k == 0))
         count++;
      if (count == n)
         return i;
   }
   return -1;
}
int main() {
   int n = 10, k = 2;
   cout << "Last number is " << countNumbers(n, k) << " before that the number contains " << k << " and multiple of " << k;
}
の倍数が含まれます

出力

Last number is 20 before that the number contains 2 and multiple of 2

  1. C ++を使用して、数値の桁の頻度を見つけます。

    ここでは、数字の桁の頻度を取得する方法を説明します。数値が12452321、数字D =2のようで、頻度が3であるとします。 この問題を解決するには、数値の最後の桁を取得し、これがdに等しいかどうかを確認します。等しい場合は、カウンターを増やし、数値を10で割って数値を減らします。このプロセスは、数がなくなりました。 例 #include<iostream> using namespace std; int countDigitInNum(long long number, int d) {    int count = 0;    whil

  2. Xで割り切れる最大のK桁の数値のC++プログラム?

    2つの整数XとKが与えられます。 Kは整数の桁数です。論理は、Xで割り切れる最大のK桁の数字を見つけることです。 Input: X = 30, K = 3 Output: 980 説明 980は、30で割り切れる最大の3桁の数値です。Kを10の累乗として、1を引くと、最大のK桁の数値が得られます。その後、最大の数値を取得しようとします。これはXで除算されます。 例 #include <iostream> #include <math.h> using namespace std; int main() {    int X = 20;