欧拉计划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?


#define N 10000
#define M 10


void empty(bool a[])
{
for (int i = 0; i < 10; i++)
{
a[i] = false;
}
}


int main()
{
clock_t ts,te;
ts=clock();
int answer = 0;
int i,j,k,count;
char num[M],t[5];
bool x,check[M];
for (i = 1; i < N; i++)
{
count = 0;
x = true;
memset(num,0,sizeof(num));
memset(t,0,sizeof(t));
empty(check);
for (j = 1; count < M; j++)
{
sprintf(t,"%d",i*j);
for (k = 0; k < strlen(t); k++)
{
if (t[k] != '0' && check[t[k]-48] == false)
{
check[t[k]-48] = true;

else
{
x = false;
break;
}
}
if (x == true)
{
count += strlen(t);
strcat(num,t);

else
{
break;
}
}
if (count == 9)
{
if (answer < atoi(num))
{
answer = atoi(num);
}
}
}
printf("\nanswer %d",answer);
te=clock();
printf("\ntime difference: %ds\n",(te-ts)/CLOCKS_PER_SEC);
getchar();
return 0;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值