D. Counting Rhyme
题解
求有多少
判断累积答案,注意去重
时间复杂度
code
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll dp[1000005]={0};
ll cnt[1000005]={0};
inline void read(ll &x) {
x = 0;
ll flag = 1;
char c = getchar();
while(c < '0' || c > '9'){
if(c == '-')flag = -1;
c = getchar();
}
while(c >= '0' && c <= '9') {
x = (x << 3) + (x << 1) + (c ^ 48);
c = getchar();
}
x *= flag;
}
inline void write(ll x)
{
if(x < 0){
putchar('-');
x = -x;
}
if(x > 9)
write(x / 10);
putchar(x % 10 + '0');
}
int main()
{
ll t;
read(t);
while(t--)
{
ll n;
read(n);
for(ll i=1;i<=n;i++)
{
ll x;
read(x);
cnt[x]++;
}
for(ll i=n;i>=1;i--)
{
ll sum=0;
for(ll j=i;j<=n;j+=i)
{
sum+=cnt[j];
}
dp[i]=sum*(sum-1)/2;
for(ll j=i+i;j<=n;j+=i) dp[i]-=dp[j];
}
ll ans=0;
for(ll i=1;i<=n;i++)
{
if(cnt[i])
{
for(ll j=i;j<=n;j+=i)
{
ans+=dp[j];
dp[j]=0;
}
}
dp[i]=0;
cnt[i]=0;
}
write(n*(n-1)/2-ans);
putchar('\n');
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具