牛客练习赛25-A-因数个数和

题目描述

q次询问,每次给一个x,问1到x的因数个数的和。

输入描述:

第一行一个正整数q;
接下来q行,每行一个正整数x

输出描述:

共q行,每行一个正整数表示答案

输入

4
1
2
3
10

输出

1
3
5
27

说明

1的因数有1
2的因数有1,2
3的因数有1,3
以此类推

备注:

1<=q<=10 ,1<= x<=10^9
解题思路:简单打一下表结合OEIS大法即可。
AC代码:
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long LL;LL n,ans,q;
 4 int main(){
 5     while(cin>>q){
 6         while(q--){
 7             cin>>n;ans=0;
 8             for(LL i=1;i*i<=n;++i){
 9                 if(n/i!=i)ans+=n/i+(n/i-n/(i+1))*i;
10                 else ans+=i;
11             }
12             cout<<ans<<endl;
13         }
14     }
15     return 0;
16 }

猜你喜欢

转载自www.cnblogs.com/acgoto/p/9617551.html