链接:https://ac.nowcoder.com/acm/contest/11160/C
来源:牛客网
题目描述
小G定义了两个函数F(n)为n的约数和,G(n)为F(1)+F(2)+...+F(n-1)+F(n)
小G想知道G(G(n))等于多少
小G想知道G(G(n))等于多少
输入描述:
小G会给你一个n
输出描述:
输出一个数G(G(n))即可
示例1
输入
5
输出
371
备注:
数据范围:
1<=n<=5e4
代码:
#include<bits/stdc++.h> #define ll long long using namespace std; ll S(ll n){//前n项和 return n*(n+1)/2; } ll G(int n){ ll res=0; int sq=sqrt(n); for(int i=1;i<=sq;i++){ res+=n/i*i; if(n/i!=i)//这里很重要 res+=i*(S(n/i)-S(n/(i+1))); } return res; } int main(){ ll n; cin>>n; //cout<<G(n)<<endl; cout<<G(G(n))<<endl; }