Wenn Sie i
und j
die Domäne [0,9] beschränken, dann wäre eine 10x10-Lookup-Tabelle eine performante Lösung sein:
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},
{L, 321L, 32L, 3L, 34L, 345L, 3456L, 34567L, 345678L, 3456789L},
{L, 4321L, 432L, 43L, 4L, 45L, 456L, 4567L, 45678L, 456789L},
{L, 54321L, 5432L, 543L, 54L, 5L, 56L, 567L, 5678L, 56789L},
{L, 654321L, 65432L, 6543L, 654L, 65L, 6L, 67L, 678L, 6789L},
{L, 7654321L, 765432L, 76543L, 7654L, 765L, 76L, 7L, 78L, 789L},
{L, 87654321L, 8765432L, 876543L, 87654L, 8765L, 876L, 87L, 8L, 89L},
{L, 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()
Es ist notwendig, long
zu verwenden, statt int
die volle handhaben Bereich der möglichen Ausgänge.
Ich dachte darüber nach, einen int namens "count" zu haben und dann als count inkrementiert, es fügt auch diese Zahl auf die vorherige Zahl hinzu. Wenn also "i" 3 wäre und "j" 5 wäre, wäre "count" auch gleich "i" und addiert eine Zahl, bis es "j" trifft. –
Was ist die erwartete Ausgabe, wenn 'i' 3 ist und' j' '5' ist? – Pang
@Pang, '345' Ich habe gerade etwas Dummes versucht, an das ich gedacht habe. : P –