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

C++で最初と最後の桁が同じ数を数える


[最初、最後]の間隔が与えられます。目標は、この間隔内で最初と最後の桁が同じである数の数を見つけることです。たとえば、232の最初と最後の桁は2と同じです。

これを行うには、i=firstからi=lastまでトラバースします。数字ごとに、最初の桁と最後の桁を比較します。同じ場合は、カウントを増やします。

例を挙げて理解しましょう。

入力 −最初=8最後=40

出力 −最初と最後の桁が同じ数の数− 5

説明 −最初と最後の数字が同じ8から40までの数字-

8, 9, 11, 22, 33

入力 −最初=100最後=200

出力 −最初と最後の桁が同じ数の数:5

説明 −最初と最後の数字が同じ100から200までの数字-

101, 111, 121, 131, 141, 151, 161, 171, 181, 191.

以下のプログラムで使用されているアプローチは次のとおりです

  • 最初と最後の2つの整数を使用して、範囲[first、last]を定義します。

  • 関数getFirstDigit(int num)は数値を受け取り、その最初の桁を返します。

  • num> =10の場合、numを10で割ります。最後にnumは最初の桁になります。この値を返します。

  • 関数getCount(int fst、int lst)は範囲変数を受け取り、最初と最後の桁が同じである数値の数を返します。

  • 初期カウントを0とします。

  • i=fstからi=lstまでのforループ開始を使用して、各iについて、getFirstDigit(i)を呼び出して最初の桁を計算し、fdigitに格納します。 (fdigit =getFirstDigit(i))。

  • 最後の桁をldigit=i%10として計算します。

  • ldigit ==fdigitの場合、それらが同じであることを意味します。インクリメントカウント。

  • 結果としてカウントを返します。

#include <bits/stdc++.h>
using namespace std;
//to find starting digit
int getFirstDigit(int num){
   while (num >= 10)
      { num = num/ 10; }
   return num;
}
int getCount(int fst,int lst){
   int count=0;
   for(int i=fst;i<=lst;i++){
      int fdigit=getFirstDigit(i);
      int ldigit=i%10; //to get last digit
      if(fdigit==ldigit) //if both are equal increment count
         { ++count; }
   }
   return count;
}
int main(){
   int first = 10, last = 23;
   cout<<"Numbers with same first and last digits:"<<getCount(first, last);
   return 0;
}

出力

上記のコードを実行すると、次の出力が生成されます-

Numbers with same first and last digits:2

  1. C++では偶数桁と奇数桁の合計の絶対差が1であるすべてのn桁の数値を出力します

    この問題では、整数nが与えられ、偶数と奇数の桁の合計の絶対差が等しくなるように、すべてのn桁の数値を出力する必要があります。は1です。0の先頭にある数字を作成している間は考慮されません。 絶対差 は、値が絶対値(正の値)である両方の数値の差です。 問題を理解するために例を見てみましょう- Input: n = 2 Output: 10 12 21 23 32 34 43 45 54 56 65 67 76 78 87 89 98 Explaination : taking an of the numbers from the output, 54, even digit - odd dig

  2. C++の配列番号の積の最後のk桁を検索します

    Aと呼ばれるn個の要素の配列があるとします。別の数kがあります。私たちのタスクは、配列Aの要素の積の最後のk桁を見つけることです。A=[15、22、13、19、17]とすると、積は1385670、最後のk=3桁は670です。 この問題を解決するために、10 kを法とする数値を乗算します。 。 例 #include<iostream> #include<cmath> using namespace std; int displayLastKNumbers(int array[], int n, int k) {    int mod = (int)