如何构造重复方程?
假设两个整数 x 和 N。
我试图确定如何构造一个算法,该算法将返回重复 N 次的值 x 的整数。
因此,如果 x 为 9 并且 N 为 4,则方程将返回 9999。
如果 x 为 9,N 为 5,则方程将返回 99999。(令人恶心)
我希望这不是完全荒谬或不合适的。 :)
Suppose two integers x and N.
I'm trying to determine how to construct an algorithm that would return an integer of the value x repeated N times.
So if x was 9 and N was 4, the equation would return 9999.
And if x was 9 and N was 5, the equation would return 99999. (ad nauseam)
I hope this isn't completely absurd or out of place on SO. :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
这对我有用:(10^N-1)/9*x
This works for me: (10^N-1)/9*x
请注意,x 是一个整数,并且不一定是 10 进制系统中的 1 位数字。如果 N = 3 且 x = 12 会怎样?那么答案应该是 121212。
解决方案如下:我们需要以 10 为底的系统中数字 x 的长度
p
。设 p = Floor(lg(x)+1)。我们要搜索的数字是x + x*10^p + x*10^2p + ... + x*10^(N-1)p
。即 x * (10^(pN) - 1) / (10^p - 1)。Note that x is an integer and it does not have to be a 1-digit number in base-10 system. What if N = 3 and x = 12? Then the answer should be 121212.
Here is the solution: we need the length
p
of the number x in base-10 system. Letp = floor(lg(x)+1)
. The number we are searching for isx + x*10^p + x*10^2p + ... + x*10^(N-1)p
. That isx * (10^(pN) - 1) / (10^p - 1)
.这看起来更像是一个编程问题,因为解决方案很大程度上依赖于以 10 为基数的数字系统。执行此操作的算法只是对 N 进行简单的循环,将前一个数字相乘并加上 x。
This seems like more of a programming question, as the solution is heavily dependent on the base-10 number system. The algorithm to do this would just be a simple loop over N which multiplies the previous number and adds a x.
伪代码:
C++ 示例:
pseudocode:
a C++ example:
只是为了有点不同,我用这个递归函数制作了一个 JavaScript 小提琴:
Fiddle: http://jsfiddle .net/SZKeb/2/
它只是从 N 向后计算,因此本质上将计算为
9000 + 900 + 90 + 9 + 0 = 9999
Just to be a little different, I've made a JavaScript fiddle with this recursive function:
Fiddle: http://jsfiddle.net/SZKeb/2/
It just works backwards from N, so essentially will calculate as
9000 + 900 + 90 + 9 + 0 = 9999
在 python 中,这非常简单:
In python, this is super easy:
听起来更像是你试图构造一串重复的数字,而不是做实际的数学运算。为什么不执行以下操作(C#)?
此示例显示了您需要注意的几件事:
Sounds more like you're trying to construct a string of repeating numbers than doing actual math. Why not do the following (C#)?
This sample shows a couple of things you'll wanna watch out for:
要遵循的伪代码。其本质是您要数到 n,每次数数时您都会打印出您的 x
Pseudo code to follow. The essence of this is you are going to count up to n and every time you count you will print out your x