假设有两个整数x和N。
我正在尝试确定如何构造一个算法,该算法将返回值为x的整数重复N次。
因此,如果x为9且N为4,则等式将返回9999 如果x为9且N为5,则等式将返回99999.(ad nauseam)
我希望这不是完全荒谬或不合适的。 :)
答案 0 :(得分:10)
这对我有用:(10 ^ N-1)/ 9 * x
答案 1 :(得分:4)
请注意,x是一个整数,它不必是base-10系统中的1位数字。如果N = 3且x = 12怎么办?然后答案应该是121212。
这是解决方案:我们需要base-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)
。
答案 2 :(得分:2)
这似乎更像是一个编程问题,因为解决方案严重依赖于base-10数字系统。执行此操作的算法只是一个简单的N循环,它将前一个数字相乘并添加一个x。
int foo(int x, int N) {
int result = 0;
for(i=0; i<N; i++) {
result *= 10;
result += x;
}
return result;
}
答案 3 :(得分:1)
伪代码:
Procedure Construct takes x:integer N:integer
begin
take a variable Result and initialize with 0;
For N times Do
begin
Result <- Result * 10
Result <- Result + x
end
end
一个C ++示例:
int main()
{
const int x = 9, N = 5;
int Result = 0;
for(int i = 0; i < N; ++i)
{
Result*=10;
Result+=x;
}
//use result here
}
答案 4 :(得分:1)
只是有点不同,我用这个递归函数制作了一个JavaScript小提琴:
function repeating(x, n){
return (n) ? (x * Math.pow(10,n-1)) + repeating(x, n-1) : 0;
};
小提琴:http://jsfiddle.net/SZKeb/2/
它只是从N向后工作,所以基本上会计算为9000 + 900 + 90 + 9 + 0 = 9999
答案 5 :(得分:1)
在python中,这非常简单:
def repeat(x, N):
return int(str(x) * N)
答案 6 :(得分:0)
要遵循的伪代码。这个的本质是你将数到n,每次算上你都会打印出你的x
for(int i=1; i <=x ; i++)
{
system.print("n");
}
答案 7 :(得分:0)
听起来更像是在尝试构建一串重复数而不是实际数学。为什么不做以下(C#)?
using System;
using System.Text;
public int CreateInt(int x, int N)
{
StringBuilder createdString = new StringBuilder();
int createdInt;
for (int i = 0; i < N; i++)
createdString.Append(x.ToString());
if (!int.TryParse(createdString.ToString(), out createdInt))
throw new Exception(string.Format("Value x ({0}) repeated N ({1}) times makes {2}. This is not a valid integer.", x, N, createdString));
return createdInt;
}
int createdInt1 = CreateInt(7, 5); // output: 77777
int createdInt2 = CreateInt(14, 4); // output: 14141414
int createdInt3 = CreateInt(1, 20); // output: throws exception "Value x (1) repeated N (20) times makes 11111111111111111111. This is not a valid integer."
此示例显示了一些您需要注意的事项:
答案 8 :(得分:-1)
x*(10^(floor(log(x)-1)*N))/(10^(floor(log(x)-1)*N))