将所有正整数连接起来构造的一个十进制无理数如下所示:
0.123456789101112131415161718192021…
可以看出小数点后第12位数字是1。
如果dn表示上述无理数小数点后的第n位数字,求下式的值:
d1 × d10 × d100 × d1000 × d10000 × d100000 × d1000000
char s[1005000] = {0};
void fun10(void)
{
long i, sum = 1, k = 1, m = 0, n = 0;
char s1[100];
for (i = 1; ; i++)
{
sprintf(s1, "%d", i);
strcat(s,s1);
if (strlen(s) >= k)
{
m = s[k-1] - 48;
sum *= m;
k *= 10;
++n;
printf("%ld %ld %ld\n", sum, k, m);
}
if (n == 7)
break;
}
printf("%d\n", sum);
}
int main (void)
{
fun10();
return 0;
}