NYOJ 月老的難題南工478

題目鏈接:here~~

#include <iostream>
#include <cstdio>
using namespace std;
int a[500010];
int main()
{
    int n, N;
    for (int i=1; i*i<=500000; i++)
    {
        for (int j=i; j*i<=500000; j++)
        {
            if (j==i) {a[i*j]+=i;continue;}//如果i==j,i*j只加一個i
            a[i*j]+=i+j;//i不等j,把i*j那一項加上它的因子i和j
        }
    }
    scanf("%d", &N);
    while (N--)
    {
        scanf("%d", &n);
        printf("%d\n", a[n]-n);
    }
    return 0;
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章