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

C++で整数を変更することで得られる最大の違い


整数のnumがあるとします。次の手順を正確に2回適用します。手順は、-

のようになります。
  • 0から9の範囲の数字xを選択します。

  • 同じく0から9の範囲にある別の数字yを選択します。数字yはxと等しくてもかまいません。

  • numの10進表現で出現するすべてのxをyに置き換えます。新しい整数に先行ゼロを含めることはできません。また、新しい整数の値を0にすることもできません。

ここで、aとbを、それぞれ1回目と2回目のnumに操作を適用した結果であると考えます。次に、aとbの最大差を見つけます。

したがって、入力が555のような場合、最初のピックx=5およびy=9として出力は888になり、新しい整数をaに格納します。 2回目はx=5とy=1を選び、新しい整数をbに格納します。

これで、a=999とb=111になり、最大差は=999-111=888になります。

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

  • 関数getMax()を定義します。これにはxが必要です

  • s:=xを文字列に変換

  • a:='9'

  • i:=0

  • (i

    • (iを1増やします)

  • i

    • a:=s [i]

  • 初期化i:=0の場合、i

    • s [i]がaと同じ場合、-

      • s [i]:='9'

  • sを数値として返す

  • 関数getMin()を定義します。これにはxが必要です

  • s:=xを文字列に変換

  • s[0]が'1'と等しくない場合、-

    • a:=s [0]

    • 初期化i:=0の場合、i

      • s [i]がaと同じ場合、-

        • s [i]:='1'

  • それ以外の場合

    • sのサイズが1と同じ場合、-

      • 1を返す

    • i:=0

    • a:='1'

    • while(i

      • (iを1増やします)

    • i

      • a:=s [i]

    • 初期化i:=1の場合、i

      • s [i]がaと同じ場合、-

        • s [i]:='0'

  • sを数値として返す

  • メインの方法から、次のようにします-

  • a:=getMax(num)

  • b:=getMin(num)

  • 戻る|a--b |

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

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int getMax(int x){
      string s = to_string(x);
      char a = '9', b;
      int i = 0;
      while (i < s.size() && s[i] == '9')
         i++;
      if (i < s.size())
         a = s[i];
      for (int i = 0; i < s.size(); i++) {
         if (s[i] == a) {
            s[i] = '9';
         }
      }
      return stoi(s);
   }
   int getMin(int x){
      string s = to_string(x);
      char a;
      if (s[0] != '1') {
         a = s[0];
         for (int i = 0; i < s.size(); i++) {
            if (s[i] == a) {
               s[i] = '1';
            }
         }
      }
      else {
         if (s.size() == 1) {
            return 1;
         }
         int i = 0;
         a = '1';
         while (i < s.size() && s[i] <= '1')
            i++;
         if (i < s.size())
            a = s[i];
         for (int i = 1; i < s.size(); i++) {
            if (s[i] == a) {
               s[i] = '0';
            }
         }
      }
      return stoi(s);
   }
   int maxDiff(int num) {
      int a = getMax(num);
      int b = getMin(num);
      return abs(a - b);
   }
};
main(){
   Solution ob;
   cout << (ob.maxDiff(666));
}

入力

666

出力

888

  1. iPhoneまたはiPad用のMicrosoftIEを入手できますか?

    Safari、Chrome、Firefox、またはその他のものが好きかどうかにかかわらず、すべてのデバイスでお気に入りのWebブラウザを使用することをお勧めします。しかし、お気に入りのWebブラウザーがMicrosoft Internet Explorer(略称IE)である場合はどうなりますか? IEはデスクトップコンピュータでうまく機能します(Macを使用している場合を除きます。IEはMacに何年も存在していません)。 iOSデバイスも使用している場合は、iPhoneまたはiPad用のIEを入手するための回避策が必要です。 iPhoneまたはiPadのInternetExplorer?いい

  2. Windows10でヘルプを取得する方法

    あなたが新しいWindowsユーザーであろうと、何十年もの間PCを使ってきたのであろうと、私たち全員が少しの助けを必要とする時があります。初期のコンピュータは単にマニュアルを参照するように促していましたが、最近のシステムでは、はるかに高度な支援方法を利用できます。 ただし、Windows 10が提供するヘルプにアクセスする方法を知らないと、役に立たないでしょう。これらのヒントを使用すると、ガイダンスや情報から離れすぎないようにすることができます。必要です。 F1を押します 従来、F1はヘルプドキュメントのWindowsショートカットキーでしたが、Windows 10でも同様です。使用してい