一、题目描述:
数据范围:
二、解题思路:
个人觉得思维难度不大,只是要记住一个结论:
这个公式对于
证明一:
证明二:
那这个题就不难了,推一下式子就行了,顺便证一下线性筛
现在这个题就做完了,时间复杂度
三、完整代码:
1 #include<iostream> 2 #define N 1000010 3 #define lim 1000000 4 using namespace std; 5 int T,n,cnt; 6 long long ans,f[N]; 7 int p[N],vis[N],phi[N]; 8 void pre_work() 9 { 10 phi[1]=f[1]=1; 11 for(int i=2;i<=lim;i++) 12 { 13 if(!vis[i]) p[++cnt]=i,phi[i]=i-1; 14 for(int j=1;j<=cnt&&p[j]*i<=lim;j++) 15 { 16 vis[i*p[j]]=1; 17 if(i%p[j]==0){ 18 phi[i*p[j]]=phi[i]*p[j]; 19 break; 20 }else phi[i*p[j]]=phi[i]*phi[p[j]]; 21 } 22 } 23 for(int i=2;i<=lim;i++) 24 f[i]=1ll*i*phi[i]/2; 25 } 26 void solve() 27 { 28 cin>>n;ans=0; 29 for(int i=1;i*i<=n;i++) 30 if(n%i==0) 31 { 32 ans+=f[i]; 33 if(i*i!=n) ans+=f[n/i]; 34 } 35 cout<<ans*n<<'\n'; 36 } 37 int main() 38 { 39 ios::sync_with_stdio(false); 40 cin.tie(0);cout.tie(0); 41 cin>>T;pre_work(); 42 for(int i=1;i<=T;i++) 43 solve(); 44 return 0; 45 }
四、写题心得:
写数学题就是推公式比较耗时间,但是有一种其他题都享受不到的快感!收获经验如下:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】