给定一个掩码数,计算所有可能被 n 整除的数

Posted

技术标签:

【中文标题】给定一个掩码数,计算所有可能被 n 整除的数【英文标题】:Given a masked number, count all the possible number divisible by n 【发布时间】:2017-11-29 08:04:33 【问题描述】:

我有一个动态编程练习,但我不知道它在这里如何工作:

我们有一个神秘的数字是一个由数字和星号*组成的字符串。 给定一个神秘数,计算所有可能的自然数,将星号 * 替换为一个数字,得到一个可被 n 整除的整数。 例如:

对于 1*1* 和 n = 6,有 16 个可能的数可以被 n 整除:1014, 1110, 1116, 1212, 1218, 1314, 1410, 1416, 1512, 1518, 1614, 1710, 1716, 1812, 1818, 1914.

如果有一个前导星号,那么它不应该被零替换:

*12 -> 112(可以)但 *12 -> 012(不可以)

输入:

1

1

时间限制:

在 C++ 语言中为 500 毫秒。正如我所说,这是一个动态编程练习。

谁能给我一些提示?

【问题讨论】:

您是否提前知道n 的值,或者那是您程序输入的一部分? (如果事先知道可能有捷径:对于n=6,最后一个数字必须是偶数,并且数字之和必须是3的倍数。)如果事先不知道n,那么暴力破解是否有问题(用数字替换星号并用n除以测试所有可能性)?您的编程语言中的字符串大小或整数大小是否有限制?好的解决方案需要这些细节。 抱歉我的错误,n 是事先不知道的:n 在 1-1000 的范围内,神秘数字的大小在 1 -1000 的范围内,时间限制为 500ms,使用 C++ 语言。所以我不认为会有蛮力@RoryDaulton的地方 如果你需要我可以给你递归算法的代码。但不知道动态。 500毫秒也是很多时间!!!!!!这个算法只需要 1ms 我同意:500 毫秒是很多时间。考虑到您的限制,最多可以通过蛮力轻松完成 3 颗星。 【参考方案1】:

我为你写了一个 javascript 它可以工作,你可以把它改成 c++, 也给你留言。它使用递归来处理和替换左边的每个 * 并用可能的数字替换它

var string = "sample mystriuos number"

function Func(mysNumber , n ) 

    // this function 
    var realnumber = true // a check if number is not mystrius anymore!!
    for (var i=0 ; i<= mysNumber.length ; i++)
    
        if(i !=0 && mysNumber[i]=="*") // for  Not left number
        
            realnumber= false
            for(var j=0 ; j<=9 ;j++ )
            
                Func(mysNumber.substring(0,i) + j.toString() + mysNumber.substring(i+1,mysNumber.length) ,n)
            
        
        else if (mysNumber[i]=="*") // for left number 
        
            realnumber = false
            for(var j=1 ; j<=9 ;j++ )
            
                Func(mysNumber.substring(0,i) + j.toString() + mysNumber.substring(i+1,mysNumber.length) ,n)
            

        
    

    if(realnumber)
        if(parseInt(mysNumber) % n ==0)
            print(mysNumber)



func(string , 6)

【讨论】:

以上是关于给定一个掩码数,计算所有可能被 n 整除的数的主要内容,如果未能解决你的问题,请参考以下文章

AcWing 890. 能被整除的数(容斥原理)

编写c++程序,计算1000以内能被3整除的整数和并输出

练习题

习题1

能被整除的数

用c语言编辑,计算1-1000以内能被3整除的数的个数以及它们的和!急需