div2 C/div1 A 正确算法复杂度多少?
  • 板块学术版
  • 楼主封禁用户
  • 当前回复20
  • 已保存回复20
  • 发布时间2020/5/30 18:24
  • 上次更新2023/11/7 01:26:36
查看原帖
div2 C/div1 A 正确算法复杂度多少?
338442
封禁用户楼主2020/5/30 18:24

我写了个O(nlogn)O(\sqrt n\log n),T成80/kel

#include<bits/stdc++.h>
using namespace std;
typedef __int128 ll;
ll n,ans;
char ss[1<<17],*A=ss,*B=ss;
inline char gc(){return A==B&&(B=(A=ss)+fread(ss,1,1<<17,stdin),A==B)?-1:*A++;}
inline void read(register ll&x){
    x=0;char s=gc();
    while(!isdigit(s))s=gc();
    while(isdigit(s))x=x*10+(s^'0'),s=gc();
}
void print(register ll x){
    if(x>9)print(x/10);
    putchar(x%10|'0');
}
ll gcd(ll x,ll y){return !y?x:gcd(y,x%y);}
inline ll sum(ll x){return x-x/2-x/5+x/10;}
inline ll calc(ll x){
	ll ret=0;
	for(ll t=1;t<=x;t*=2)ret+=ll(log2((double)ll(x/t))/log2(5))+1;
	return ret;
}
int main(){
	read(n);
	for(ll l=1,r;l<=n;l=r+1){
		r=n/(n/l);
		ans+=n/l*calc(n/l)*(sum(r)-sum(l-1));
	}
	print(ans);
	return 0;
}

ps.禁止无意义回复。

2020/5/30 18:24
加载中...