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

特殊な数値の合計桁数を検索するC++コード


整数kが与えられたとしましょう。その番号のすべての桁が同じである場合、その番号を特別な番号と呼びます。たとえば、1、11、1111は特別な番号です。特別な番号は、1、11、111、1111、2、22、222、2222、3、33、333、3333などの順序でカウントされます。 kまでの特殊数の合計桁数を調べる必要があります。 kの値は10000以下です。

したがって、入力がk =9999のような場合、出力は90になります。

ステップ

これを解決するには、次の手順に従います-

s := convert k to string
Define an array v of size: := {0, 1, 3, 6, 10}
print(((s[0] - '0') - 1) * 10 + v[length of s])

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;
#define N 100
void solve(int k) {
   string s = to_string(k);
   int v[] = {0, 1, 3, 6, 10};
   cout<< ((s[0] - '0') - 1) * 10 + v[s.length()] << endl;
}
int main() {
   int k = 9999;
   solve(k);
   return 0;
}

入力

9999

出力

90

  1. C++の数値の階乗で桁の合計を検索します

    数値nがあるとすると、そのときの桁の合計を見つけることがタスクです!。 n =5と考えて、次にn! =120。したがって、結果は3になります。 この問題を解決するために、階乗桁を格納するベクトルを作成し、それを1で初期化します。次に、ベクトルに1からnを1つずつ乗算します。次に、ベクトル内のすべての要素を合計し、合計を返します 例 #include<iostream> #include<vector> using namespace std; void vectorMultiply(vector<int> &v, int x) {   &n

  2. C++でDで割り切れるN桁の数値を検索します

    NとDの2つの数があるとします。Dで割り切れるN桁の数を見つける必要があります。Nが3で、Dが5の場合、数は500になります。これは簡単に解決できます。 Dが10でNが1の場合、それは不可能です。 Dを入れて、Dの桁数がmであると仮定し、N – m個の0を付けて、N桁の数でDで割り切れるようにします。 例 #include<iostream> using namespace std; string nDigitDivByD(int n, int d) {    string ans = "";    if (d <