牛客练习赛25 因数个数和

题目链接
题目描述 【牛客练习赛25 因数个数和】q次询问,每次给一个x,问1到x的因数个数的和。
输入描述: 第一行一个正整数q ;
接下来q行,每行一个正整数 x
输出描述: 共q行,每行一个正整数表示答案
示例1 输入

4 1 2 3 10

输出
1 3 5 27

说明
1的因数有12的因数有1,23的因数有1,3以此类推 备注: 1<=q<=10 ,1<= x<=109

AC
#include #include #include #include #include #include #define N 100005 #define ll long long using namespace std; int main() { #ifndef ONLINE_JUDGE freopen("in.txt", "r", stdin); #endif int t; scanf("%d", &t); while (t--) { int n; scanf("%d", &n); ll ans = 0; for (int i = 1; i <= n; ++i) { int tar = n / i; // 当前约数 int l = i; int r = n / tar; // 约数为tar的最右边的位置 ans += (r - l + 1) * tar; //区间乘以tar i = r; } printf("%lld\n", ans); } return 0; }

    推荐阅读