数字游戏(number)

蜀山区2020年信息学竞赛试题

题目描述 Description

小萱萱刚学习完约数的知识,一个数的约数指能整除这个数的正整数。周末,小萱萱和几个朋友一起玩耍,刚学习完约数知识的小萱萱迫不及待的想给小朋友们展示一下她的本领,她和几个朋友一起玩起了这样一个游戏:给你一个整数N,需要算出这个数所有的约数的和。例如15的数有1, 3, 5, 15。所以15的约数和为1+3+5+15=24.

输入描述 Input Description

本题有多组数据,第一行一个T,表示有T组数据;下面T行,每行一个正整数N,表示要处理的数。

输出描述 Output Description

T行,每行一个正整数,表示输入中对应的数的约数和。

样例输入 Sample Input

1 15

样例输出 Sample Output

24

数据范围及提示 Data Size & Hint

对于20%的数据,T=1;
对于50%的数据,T≤5000;
对于80%的数据,T≤50000;
对于100%的数据,T≤500000,N≤5000000。

代码:

#include
using namespace std;
int n,t;
long long a[5000005],cnt;

int main() {
    for(int i=1;i<=5000000;i++){
        for(int j=i;j<=5000000;j+=i){
            a[j]+=i;
        }
    }
    cin>>n;
    while(n--){
        scanf("%d",&t);
        printf("%lld\n",a[t]);
    }
    return 0;
}

你可能感兴趣的:(算法,数据结构)