Codeforces Round #844 D
D. Many Perfect Squares
题链
一个小时没出D 好似喵
我们看到这个n只有50
然后思考了 两个平方数之差有什么关系
发现都是 (aj+x)^2 - (ai+x)^2
我们设A=aj+x B=ai+x
A2-B2=(A+B)(A-B)=aj-ai
这样我们就可以暴力n2枚举每一个i j
然后再枚举这个aj-ai的两个因子(A+B)(A-B)这样就可以求的x为多少
之后再O(n)计算一遍在此x下能有多少平方数
注意我们的x的取值范围是[0,1e18] 会爆ll的同时 还不能取负数
int n,a[55]; void solve(){ cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; int ans=1; for(int i=1;i<=n;i++){ for(int j=i+1;j<=n;j++){ int d=a[j]-a[i]; for(int x=1;x<=d/x;x++){ if(d%x==0){ int y=d/x; if((x+y)%2||(y-x)%2)continue; int A=(x+y)/2; if(A*A>=a[j]){ int res=0,X=A*A-a[j]; for(int k=1;k<=n;k++){ db s=sqrt((db)a[k]+(db)X); if(abs(s-ceil(s))<1e-12||abs(s-floor(s))<1e-12){ res++; //cout<<s<<' '<<ceil(s)<<' '<<floor(s)<<endl; } } ans=max(ans,res); } } } } } cout<<ans<<endl; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】