社区讨论
O(logn)算法
P2388阶乘之乘参与者 9已保存回复 16
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 16 条
- 当前快照
- 1 份
- 快照标识符
- @mi7xumvi
- 此快照首次捕获于
- 2025/11/21 05:23 4 个月前
- 此快照最后确认于
- 2025/11/21 06:40 4 个月前
CPP
#include<cstdio>
long long ans;
const int p = 5;
const int sp=(p*(p-1))>>1;
int main() {
int n;
scanf("%d",&n);
int s=n,l=0,base1=p,base=1;
while(s/=5) l++;
for(register int cur=1;cur<=l;cur++) {
int base2=base1*p,x=(n+1)/base2;
long long a=sp*x*base1;
int y=n%base2-base1+1;
for(register int i=1;i<p&&y>0;i++,y-=base1) {
if(y>base1) a+=base1*i;
else { a+=y*i; break; }
}
base1=base2;
ans+=a*base; base=p*base+1;
}
printf("%lld\n",ans);
return 0;
}
回复
共 16 条回复,欢迎继续交流。
正在加载回复...