程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了计算 n+nn+nnn 的分层值大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决计算 n+nn+nnn 的分层值?

开发过程中遇到计算 n+nn+nnn 的分层值的问题如何解决?下面主要结合日常开发的经验,给出你关于计算 n+nn+nnn 的分层值的解决方法建议,希望对你解决计算 n+nn+nnn 的分层值有所启发或帮助;

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

@H_403_9@ number = d + dd + ddd + ... + dd...ddd

其中 @H_403_9@d 是一些数字。例如

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

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

@H_403_9@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(以 n 个 1 结尾)。

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

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

例如335:335/123 = 约 2.72。

这是 O(1)

a(n) 公式由 Henry Bottomley & OEIS 提供

大佬总结

以上是大佬教程为你收集整理的计算 n+nn+nnn 的分层值全部内容,希望文章能够帮你解决计算 n+nn+nnn 的分层值所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:计算