【欧拉计划】40. Champernowne's constant

【思路】由于一个整数 $x$ 的数位个数等于 $\log_{10} x+1$,因而我们可以不停累加,到了所需的值就进行计算:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>
#include<math.h>
const int a[]={1,10,100,1000,10000,100000,1000000};
int cnt,ans=1;
int main()
{
for(int i=1,x=0;x<=1000000;++i)
{
int len=log10(i)+1,j=i;
x+=len;
if(x>=a[cnt])
{
for(int k=0;k<x-a[cnt];++k)j/=10;
ans*=j%10;
++cnt;
}
}
printf("%d",ans);
return 0;
}

【欧拉计划】40. Champernowne's constant

https://hensier.github.io/projecteuler/40/

作者

hensier

发布于

2022-05-01

更新于

2023-01-02

许可协议

评论