建议加强数据

P2568 GCD

AC代码 ``` #include <bits/stdc++.h> using namespace std; #define x = a x(a) #define re register const int maxn = 1e7 + 10; int read() { int s = 0, f = 1; char ch = getchar(); while (ch < '0' || ch > '9') { if (ch == '-') f = -1; ch = getchar(); } while (ch >= '0' && ch <= '9') { s = s * 10 + ch - '0'; ch = getchar(); } return s * f; } bitset<(int)1e7+5>vis; int prime[maxn], cnt; int N; inline void euler() { for(re int i=2;i<=N;++i) { if(!vis[i]) { prime[++cnt]=i; for(re int j=i;i<=N/j;++j)vis[i*j]=1; } } } unsigned long long f[maxn]; inline void sovle() { long long tmp=0; for (re int k = N; k >= 1; k--) { tmp=(N / k); f[k] = tmp * tmp; for (re long long i = (k<<1) ; i <= N; i += k) { f[k] -= f[i]; } } } int main() { N = read(); sovle(); euler(); unsigned long long ans = 0; for (re int i = 1; i <= cnt; ++i) { ans += f[prime[i]]; } cout << ans << endl; return 0; } ```
by dlydly @ 2022-07-14 15:56:44


> sovle
by TernaryTree @ 2022-07-14 15:57:09


@[Slytherin_always](/user/386921) ??
by LiaoYF @ 2022-07-14 16:09:29


@[Slytherin_always](/user/386921) 是请求加强,不是tlqtj,只是发一下水代码
by LiaoYF @ 2022-07-14 16:10:07


@[Slytherin_always](/user/386921) 哪来的贵物
by 断清秋 @ 2022-07-14 16:11:44


@[Slytherin_always](/user/386921) 你懂不懂什么是tlqtj,不懂别在这《伸张正义》
by hank0402 @ 2022-07-14 16:14:53


2楼代码仅作为证明复杂度的依据,并无它意,相信针对性语言已经够强,还望阅读后做出评论
by dlydly @ 2022-07-14 16:14:59


快读快写+bitset优化都上了,卡常卡过去的你加强什么。 哦,这优化是我写的啊,那没事了。
by Rnfmabj @ 2022-07-14 16:47:13


``` #include <bits/stdc++.h> using namespace std; const int maxn = 1e7 + 10; int prime[maxn], cnt; bool vis[maxn]; int N; void euler() { for (int i = 2; i <= N; ++i) { if (!vis[i]) { prime[++cnt] = i; } for (int j = 1; j <= cnt && i * prime[j] <= N; ++j) { vis[i * prime[j]] = 1; if (!(i % prime[j])) break; } } return; } unsigned long long f[maxn]; void eee() { long long tmp = 0; for (int k = N; k >= 1; k--) { tmp = (N / k); f[k] = tmp * tmp; for (long long i = k*2; i <= N; i += k) { f[k] -= f[i]; } } } int main() { cin>>N; eee(); euler(); unsigned long long ans = 0; for (int i = 1; i <= cnt; ++i) { ans += f[prime[i]]; } cout << ans << endl; return 0; } ``` 如君所言,去了皮 ![](//图.tk/e) 800ms跑的飞快
by dlydly @ 2022-07-14 16:49:04


@[dlydly](/user/124786) 我所有点加起来都没800ms,飞快这词不是你这么用的 然后你又要开始“顺从”了是吧
by Rnfmabj @ 2022-07-14 16:53:56


| 下一页