欧拉计划40——钱珀瑙恩常数

将全部正整数链接起来构造的一个十进制无理数以下所示:spa

0.12345678910 1112131415161718192021…

能够看出小数点后第12位数字是1。code

若是dn表示上述无理数小数点后的第n位数字,求下式的值:class

d 1 × d 10 × d 100 × d 1000 × d 10000 × d 100000 × d 1000000


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;
}