ZOJ 2095 Divisor Summation
刚开始做的时候不懂啊,怎么做怎么Time Limit Exceeded,那个心凉啊。
Time limit: 5 Seconds Memory limit: 32768K
Total Submit: 4504 Accepted Submit: 862
Give a natural number n (1 <= n <= 500000), please tell the summation of all its proper divisors.
Definition: A proper divisor of a natural number is the divisor that is strictly less than the number.
e.g. number 20 has 5 proper divisors: 1, 2, 4, 5, 10, and the divisor summation is: 1 + 2 + 4 + 5 + 10 = 22.
Input
An integer stating the number of test cases, and that many lines follow each containing one integer between 1 and 500000.
Output
One integer each line: the divisor summation of the integer given respectively.
Sample Input
3
2
10
20
Sample Output
1
8
22
Author: Neal Zane
#include<stdio.h> int main() { int a[500001] = { 0 , 0 } ; int i , j ; for( i = 1 ; i <= 250000 ; i ++ ) for ( j = 2 ; i*j <= 500000 ; j ++ ) a[i*j] += i ; scanf("%d",&i) ; while( i -- ) { scanf("%d",&j); printf("%d\n",a[j]); } return 0 ;
}
浙公网安备 33010602011771号