kiem tien, kiem tien online, kiem tien truc tuyen, kiem tien tren mang
Friday, November 11, 2011

SUU TAM



Tính tổng các ước của số n (n≤1012).

Input

Dòng đầu chứa số bộ test.
Các dòng sau, mỗi dòng chứa 1 số nguyên dương n (n≤1012).

Output

Mỗi test in trên 1 dòng chứa 1 số nguyên là tổng các ước của test tương ứng.

Example

Input:
2
5
6

Output:
6
12





//Tong uoc

#include<iostream>
#include<math.h>

void Tong_Uoc(long long n)
{
if( n ==1)
{
std::cout<<1;
return;
}
long long k =sqrt(n) ,sum = 0;


if( n % 2 == 0)
{
for( int i =1; i<= k; ++i)

if( n%i == 0)
{
sum += i ;
sum += n/i;
}


}
else
{

for( int i =1;i<= k;i+=2)

if( n%i == 0)
{

sum += i ;
sum += n/i;
}


}



if( k*k == n)sum -= k;

std::cout<< sum ;
}

int main()
{
long long n;
int slg; //So luong bo test
std::cin>>slg;

for( int i=slg;i>0;--i)
{
std::cin>>n;
Tong_Uoc(n);
std::cout<<std::endl;
}
//system("pause");
return 0;
}








0 comments:

Post a Comment

domain, domain name, premium domain name for sales

Popular Posts