QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#76816 | #5503. Euclidean Algorithm | zhouhuanyi | ML | 0ms | 0kb | C++11 | 956b | 2023-02-12 11:44:47 | 2023-02-12 11:44:49 |
Judging History
answer
#include<iostream>
#include<cstdio>
#define N 1200000
using namespace std;
long long read()
{
long long sum=0;
char c=0;
while (c<'0'||c>'9') c=getchar();
while ('0'<=c&&c<='9') sum=sum*10+c-'0',c=getchar();
return sum;
}
int T,d[N+1];
long long n;
__int128 ans;
__int128 C2(long long x)
{
return ((__int128)(x)*(x-1))>>1;
}
__int128 F(long long x)
{
if (x<=N) return d[x];
__int128 res=0;
for (long long i=1,lst;i<=x;i=lst+1) lst=x/(x/i),res+=(x/i)*(lst-i+1);
return res;
}
void write(__int128 x)
{
if (!x) return;
write(x/10),printf("%d",(int)(x%10));
return;
}
int main()
{
T=read();
for (int i=1;i<=N;++i)
for (int j=i;j<=N;j+=i)
d[j]++;
for (int i=1;i<=N;++i) d[i]+=d[i-1];
while (T--)
{
n=read(),ans=0;
for (long long i=1,lst;i<=n;i=lst+1) lst=n/(n/i),ans+=F(n/i-1)*(lst-i+1);
write(ans),puts("");
}
return 0;
}
详细
Test #1:
score: 0
Memory Limit Exceeded
input:
3 2 5 14
output:
1 9 62