途中まで勘違いしてた
適当な数がパンデジタル数かどうか調べるものを作ってた。
連結積でパンデジタル数を作る方法を聞かれてるんだったw
コード
using System; using System.Diagnostics; using System.Text; namespace Problem38 { class Program { static void Main(string[] args) { P38 p = new P38(); Debug.WriteLine(p.Solve()); } } class P38 { /// <summary> /// コンストラクタ /// </summary> public P38() { } /// <summary> /// 解く /// </summary> public Int64 Solve() { Int64 maxNum = 0; for (int n = 2; n <= 9; n++) { //(1,2)の場合4-5桁必要、という感じで必要桁を求める int nd = 9 / n; int max = (int)Math.Pow(10, nd); int min = (int)Math.Pow(10, nd - 1); StringBuilder sb = new StringBuilder(); for (int i = min; i < max; i++) { sb.Clear(); //Concatenated product of i and (1, 2, ... , m) を求める for (int m = 1; m <= n; m++) { sb.Append(i * m); } //値がパンデジタル数になってるかのチェックと比較 if(IsPandigital(sb.ToString()) == true) { Int64 pNum = Int64.Parse(sb.ToString()); if (maxNum < pNum) { maxNum = pNum; Console.WriteLine(maxNum); } } } } return maxNum; } /// <summary> /// パンデジタル数か? /// </summary> /// <param name="str">検査する文字列</param> private bool IsPandigital(string str) { //9桁でなければfalse if (str.Length != 9) return false; int[] numbers = new int[9]; for (int i = 0; i < str.Length; i++) { int j = str[i] - '0' - 1; //-1だとfalse if (j == -1) return false; numbers[j]++; //字数カウンタが1より多いとfalse; if (numbers[j] > 1) return false; } return true; } } }
答え
932718654
9327 × 1 = 9327
9327 × 2 = 18654
ということでした。
- 出版社/メーカー: タカラトミー
- メディア: おもちゃ&ホビー
- 購入: 11人 クリック: 162回
- この商品を含むブログを見る
連結バイブル―国家試験から実務まで (大原の会計士受験シリーズ)
- 作者: 資格の大原公認会計士講座
- 出版社/メーカー: 大原出版
- 発売日: 2016/03/01
- メディア: 単行本
- この商品を含むブログを見る
連結会計のしくみ(第2版) (【図解でざっくり会計シリーズ】5)
- 作者: 新日本有限責任監査法人
- 出版社/メーカー: 中央経済社
- 発売日: 2014/07/09
- メディア: 単行本
- この商品を含むブログを見る