L1-103 整数的持续性 用C#实现

📅 2026/6/30 5:09:27
L1-103 整数的持续性 用C#实现
从任一给定的正整数 n 出发将其每一位数字相乘记得到的乘积为 n1​。以此类推令 ni1​ 为 ni​ 的各位数字的乘积直到最后得到一个个位数 nm​则 m 就称为 n 的持续性。例如 679 的持续性就是 5因为我们从 679 开始得到 6×7×9378随后得到 3×7×8168、1×6×848、4×832最后得到 3×26一共用了 5 步。本题就请你编写程序找出任一给定区间内持续性最长的整数。输入格式输入在一行中给出两个正整数 a 和 b1≤a≤b≤109 且 (b−a)103为给定区间的两个端点。输出格式首先在第一行输出区间 [a,b] 内整数最长的持续性。随后在第二行中输出持续性最长的整数。如果这样的整数不唯一则按照递增序输出数字间以 1 个空格分隔行首尾不得有多余空格。输入样例500 700输出样例5679 688 697代码长度限制16 KB时间限制400 ms内存限制64 MB栈限制8192 KB代码如下using System; using System.Collections.Generic; using System.Linq; public class L1_103 { public static void Main(string[] args) { var split Console.ReadLine().Split( ); int a int.Parse(split[0]); int b int.Parse(split[1]); var dictionary new Dictionaryint,int(); for (int i a; i b; i) { var s i.ToString(); int countStep 0; while (s.Length 1) { int sum 1; for (int j 0; j s.Length; j) { sum * int.Parse(s[j].ToString()); } s sum.ToString(); countStep; } dictionary.Add(i, countStep); } var max dictionary.Values.Max(); var result dictionary .Where(x x.Value max) .Select(x x.Key) .OrderBy(x x) .ToList(); Console.WriteLine(max); Console.WriteLine(string.Join( , result)); } }使用LINQ语法可更高效得到想要的结果