链接:https://www.nowcoder.com/acm/contest/158/A
来源:牛客网
第一行一个正整数q ;
接下来q行,每行一个正整数 x
共q行,每行一个正整数表示答案
1<=q<=10 ,1<= x<=10^9
1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #include <cstdlib> 5 #include <cstring> 6 #include <string> 7 #include <deque> 8 #include <vector> 9 #include <set> 10 #include <map> 11 #include <cmath> 12 using namespace std; 13 #define ll long long 14 int t,n; 15 ll solve(int n)//1~n中所有因子的个数和 16 { 17 ll ans=0; 18 for(int i=1,last;i<=n;i=last+1){//sqrt(N)的复杂度 19 last=n/(n/i);//分块 : 5/3 5/4 5/5 3 4 5 都出现了一次 20 ans+=(ll)(n/i)*(last-i+1);//n/i :i作为因子共出现的次数 21 } 22 return ans; 23 } 24 int main() 25 { 26 scanf("%d",&t); 27 while(t--) 28 { 29 scanf("%d",&n); 30 printf("%lld\n",solve(n)); 31 } 32 return 0; 33 }
原文:https://www.cnblogs.com/tingtin/p/9533033.html