题目描述

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大法,其实求1-n的因子个数的和与此求和一样牛客练习赛25-A-因数个数和,可以手推找规律。
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 }

 

相关文章:

  • 2022-02-21
  • 2022-01-17
  • 2021-04-12
  • 2021-08-17
  • 2022-02-28
  • 2022-01-17
猜你喜欢
  • 2021-11-25
  • 2021-08-30
  • 2022-12-23
  • 2022-12-23
  • 2021-10-20
  • 2021-06-19
  • 2021-12-29
相关资源
相似解决方案