牛客練習賽25
阿新 • • 發佈:2018-08-25
algorithm nbsp 輸入 mes tdi lld ring long long copy
鏈接:https://www.nowcoder.com/acm/contest/158/A
來源:牛客網
輸入描述:
第一行一個正整數q ;
接下來q行,每行一個正整數 x
輸出描述:
共q行,每行一個正整數表示答案示例1
輸入
復制4 1 2 3 10
輸出
復制1 3 5 27
說明
1的因數有1
2的因數有1,2
3的因數有1,3
以此類推
備註:
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; 15ll 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 }
牛客練習賽25