计算n+nn+nnn的分层值



我想编写一个控制台应用程序,从客户端获取整数,并检查该数字是否可以被分层(即可以表示为(

number = d + dd + ddd + ... + dd...ddd

其中CCD_ 1是某个数字。例如

36 = 3 + 33
861 = 7 + 77 + 777
335 - can't be represent in d + dd + ddd way 

到目前为止,我只能弄清楚如何允许用户输入一个整数。

using System;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Input integer");
//ask user to input integer
String n = Console.ReadLine();
string nn = Console.ReadLine();
string nnn = Console.ReadLine();
//allows user to input integer
}
}
}

一个简单的解决方案是检查不同的数字以找到解决方案:

// IsStratifified input n
for(int d = 1; d <= 9; d++) {
var s = d;
var c = d; 
while(s < n){
c = 10 * c + d; // generates dd, ddd, ...
s += c;
}
if (s == n)
return d;
return -1;
}

假设您的数字有d位。

求a(d(和a(d-1(:a(n(=(10^n-1(*(10/81(-n/9

从这两个数字中选择一个比输入数字小的较大的数字,通常是a(d(。

如果它将你的数字平均划分,那么你的数字就是分层的。

注意,a(n(是1+11+111+…+11…11(以n1s结尾(。

例如36:a(2(=12。36/12=3。

例如861:a(3(=123。861/123=7。

例如335:335/123=appx 2.72。

这是O(1(。

由Henry Bottomley&OEIS

最新更新