Problem 38
Take the number 192 and multiply it by each of 1, 2, and 3:
192 × 1 = 192
192 × 2 = 384
192 × 3 = 576
By concatenating each product we get the 1 to 9 pandigital, 192384576. We will call 192384576 the concatenated product of 192 and (1,2,3)
The same can be achieved by starting with 9 and multiplying by 1, 2, 3, 4, and 5, giving the pandigital, 918273645, which is the concatenated product of 9 and (1,2,3,4,5).
What is the largest 1 to 9 pandigital 9-digit number that can be formed as the concatenated product of an integer with (1,2, ... , n) where n > 1?
C++:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const long N = 10000;
bool ispandigital(int n) {
int digits = 0b1111111110;
while (n) {
digits ^= 1 << (n % 10);
n /= 10;
}
return !digits;
}
int main()
{
int val, max=0, j;
char s[32], t[32];
for(int i=1; i<=N; i++) {
s[0] = '\0';
t[0] = '\0';
j = 1;
while(strlen(s) < 9) {
sprintf(t, "%d", i * j);
strcat(s, t);
j++;
}
if(strlen(s) == 9) {
val = atoi(s);
if(ispandigital(val))
if(val > max)
max = val;
}
}
cout << max << endl;
return 0;
}