結果

問題 No.293 4>7の世界
ユーザー SagTokiSagToki
提出日時 2018-06-11 09:46:28
言語 C#(csc)
(csc 3.9.0)
結果
AC  
実行時間 62 ms / 2,000 ms
コード長 3,978 bytes
コンパイル時間 1,628 ms
コンパイル使用メモリ 105,728 KB
実行使用メモリ 23,040 KB
最終ジャッジ日時 2024-06-09 17:19:50
合計ジャッジ時間 4,196 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 59 ms
22,656 KB
testcase_01 AC 62 ms
22,400 KB
testcase_02 AC 61 ms
22,400 KB
testcase_03 AC 62 ms
22,656 KB
testcase_04 AC 60 ms
22,272 KB
testcase_05 AC 61 ms
22,400 KB
testcase_06 AC 60 ms
22,528 KB
testcase_07 AC 60 ms
22,528 KB
testcase_08 AC 60 ms
22,656 KB
testcase_09 AC 60 ms
22,784 KB
testcase_10 AC 60 ms
22,784 KB
testcase_11 AC 60 ms
22,400 KB
testcase_12 AC 61 ms
22,656 KB
testcase_13 AC 60 ms
22,528 KB
testcase_14 AC 60 ms
22,784 KB
testcase_15 AC 60 ms
22,528 KB
testcase_16 AC 60 ms
22,400 KB
testcase_17 AC 60 ms
22,528 KB
testcase_18 AC 61 ms
22,272 KB
testcase_19 AC 58 ms
22,528 KB
testcase_20 AC 59 ms
22,400 KB
testcase_21 AC 61 ms
23,040 KB
testcase_22 AC 59 ms
22,528 KB
testcase_23 AC 59 ms
22,656 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc)
Copyright (C) Microsoft Corporation. All rights reserved.

ソースコード

diff #

using System;
using System.Text.RegularExpressions;

namespace FourIsLargerThanSeven {
    class Program {
        static void Main(string[] args) {
            var Numbers = Input(0, 2000000000);
            char[] A = Numbers[0].ToCharArray();
            char[] B = Numbers[1].ToCharArray();
            int Answer = 0;
            //Aの桁数がBの桁数より大きければ使われる数字に関係なくAが大きい
            if(A.Length > B.Length) {
                String Number = new String(A);
                Answer = int.Parse(Number);
            //Bの桁数がAの桁数より大きければ使われる数字に関係なくBが大きい
            }else if(A.Length < B.Length) {
                String Number = new string(B);
                Answer = int.Parse(Number);
            //AとBの桁数が同じ場合にComparisonメソッドの処理を使用する
            } else {
                Answer = Comparison(A, B);
            }
            Console.WriteLine(Answer);

        }

        //入力値が指定の範囲の中の数字であることを判定する
        static String[] Input(int Min , int Max) {
            String[] Number = null;
            try {
                Number = Console.ReadLine().Split();

                //正規表現を使用して数字以外の入力をとする
                var reg = new Regex(@"{^0-9}");
                var matchA = reg.Match(Number[0]);
                if (matchA.Success) {
                    Console.WriteLine("Aを数字で入力してください");
                }
                var matchB = reg.Match(Number[1]);
                if (matchB.Success) {
                    Console.WriteLine("Bを数字で入力してください");
                }
            } catch(Exception E) {
                Console.WriteLine("想定外のエラーです");
            }
            return Number;
        }

        //入力値がそれぞれ同じ桁数の場合に上から4と7が同じ桁にあるかを
        //確認してあった場合に順位を逆にさせる
        static int Comparison(char[] A, Char[] B) {
            int Answer = 0;
            for(int i = 0; i < A.Length; i++) {
                if(A[i] > B[i]) {

                    //Aの数字がBの数字よりも大きい場合で尚且つAが7、Bが4の場合
                    if(A[i] == '7' && B[i] == '4') {
                        String Number = new string(B);
                        Answer = int.Parse(Number);
                        return Answer;

                    //Aの数字がBの数字よりも大きいが4と7が共に登場しない場合
                    } else {
                        String Number = new string(A);
                        Answer = int.Parse(Number);
                        return Answer;
                    }

                }else if(A[i] < B[i]) {

                    //Aの数字がBの数字よりも小さい場合で尚且つAが4、Bが7の場合
                    if(A[i] == '4' && B[i] == '7') {
                        String Number = new string(A);
                        Answer = int.Parse(Number);
                        return Answer;

                    //Ano数字がBの数字よりも小さいが4と7が共に登場しない場合
                    } else {
                        String Number = new string(B);
                        Answer = int.Parse(Number);
                        return Answer;
                    }
                }
            }

            //上に該当がない(同じ数字が並んでいる)場合
            String NumberA = new string(A);
            String NumberB = new string(B);
            int NewNumberA = int.Parse(NumberA);
            int NewNumberB = int.Parse(NumberB);
            if(NewNumberA > NewNumberB) {
                Answer = NewNumberA;
            } else {
                Answer = NewNumberB;
            }
            return Answer;
        }
    }
}
0