C++ 串联整数
如何连接整数。比如说,我做了一个简单的程序如下:C++ 串联整数,c++,C++,如何连接整数。比如说,我做了一个简单的程序如下: int concatenate(int i, int j) { } 我给了这个函数两个整数i将是1,j将是9。我如何连接数字以便获得123456789?尝试以下方法: int concatenate(int i, int j) { int result = 0; for (int x = i; x <= j; x++) { result = result * 10 + x; } retur
int concatenate(int i, int j) {
}
我给了这个函数两个整数i
将是1,j
将是9。我如何连接数字以便获得123456789
?尝试以下方法:
int concatenate(int i, int j) {
int result = 0;
for (int x = i; x <= j; x++) {
result = result * 10 + x;
}
return result;
}
int串联(inti,intj){
int结果=0;
对于(intx=i;x另一种使用
#包括
int串联(int i,int j){
std::string result=“”;
对于(;i如果将i
和j
限制在域[0,9],则10x10查找表将是一个性能良好的解决方案:
long concatenate_lookup[10][10] = {
{ 0L, 1L, 12L, 123L, 1234L, 12345L, 123456L, 1234567L, 12345678L, 123456789L},
{ 10L, 1L, 12L, 123L, 1234L, 12345L, 123456L, 1234567L, 12345678L, 123456789L},
{ 210L, 21L, 2L, 23L, 234L, 2345L, 23456L, 234567L, 2345678L, 23456789L},
{ 3210L, 321L, 32L, 3L, 34L, 345L, 3456L, 34567L, 345678L, 3456789L},
{ 43210L, 4321L, 432L, 43L, 4L, 45L, 456L, 4567L, 45678L, 456789L},
{ 543210L, 54321L, 5432L, 543L, 54L, 5L, 56L, 567L, 5678L, 56789L},
{ 6543210L, 654321L, 65432L, 6543L, 654L, 65L, 6L, 67L, 678L, 6789L},
{ 76543210L, 7654321L, 765432L, 76543L, 7654L, 765L, 76L, 7L, 78L, 789L},
{ 876543210L, 87654321L, 8765432L, 876543L, 87654L, 8765L, 876L, 87L, 8L, 89L},
{9876543210L, 987654321L, 98765432L, 9876543L, 987654L, 98765L, 9876L, 987L, 98L, 9L}
};
long concatenate(long i, long j ) {
assert(i>=0 && i<=9 && j>=0 && j<=9);
return concatenate_lookup[i][j];
} // end concatenate()
long concatenate_查找[10][10]={
{0L、1L、12L、123L、1234L、12345L、123456L、1234567L、12345678L、12345678L、123456789L},
{10L,1L,12L,123L,1234L,123456L,1234567L,12345678L,12345678L,12345678L},
{210L,21L,2L,23L,234L,2345L,23456L,234567L,2345678L,23456789L},
{3210L、321L、32L、3L、34L、345L、3456L、34567L、345678L、3456789L},
{43210L、4321L、432L、43L、4L、45L、456L、4567L、45678L、45678L、45678L},
{543210L、54321L、5432L、543L、54L、5L、56L、567L、5678L、56789L},
{6543210L、654321L、65432L、6543L、654L、65L、6L、67L、678L、6789L},
{76543210L、7654321L、765432L、76543L、7654L、765L、76L、7L、78L、789L},
{876543210L、87654321L、8765432L、876543L、87654L、8765L、876L、87L、8L、89L},
{9876543210L、987654321L、98765432L、9876543L、987654L、98765L、9876L、987L、98L、9L}
};
长连接(长i、长j){
断言(i>=0&&i=0&&jI正在考虑一个名为count
的整数,然后作为计数的增量,它也会将该数字加到前面的数字上。因此,如果i
为3,j
为5,count
也将等于i
并添加一个数字,直到它达到j
。如果ode>i
是3,j
是5
?@Pang,345
只是在尝试一些我认为愚蠢的事情。:不可能的重复如果i>j
会发生什么?请补充更多关于你问题的细节。
long concatenate_lookup[10][10] = {
{ 0L, 1L, 12L, 123L, 1234L, 12345L, 123456L, 1234567L, 12345678L, 123456789L},
{ 10L, 1L, 12L, 123L, 1234L, 12345L, 123456L, 1234567L, 12345678L, 123456789L},
{ 210L, 21L, 2L, 23L, 234L, 2345L, 23456L, 234567L, 2345678L, 23456789L},
{ 3210L, 321L, 32L, 3L, 34L, 345L, 3456L, 34567L, 345678L, 3456789L},
{ 43210L, 4321L, 432L, 43L, 4L, 45L, 456L, 4567L, 45678L, 456789L},
{ 543210L, 54321L, 5432L, 543L, 54L, 5L, 56L, 567L, 5678L, 56789L},
{ 6543210L, 654321L, 65432L, 6543L, 654L, 65L, 6L, 67L, 678L, 6789L},
{ 76543210L, 7654321L, 765432L, 76543L, 7654L, 765L, 76L, 7L, 78L, 789L},
{ 876543210L, 87654321L, 8765432L, 876543L, 87654L, 8765L, 876L, 87L, 8L, 89L},
{9876543210L, 987654321L, 98765432L, 9876543L, 987654L, 98765L, 9876L, 987L, 98L, 9L}
};
long concatenate(long i, long j ) {
assert(i>=0 && i<=9 && j>=0 && j<=9);
return concatenate_lookup[i][j];
} // end concatenate()