问题标题: 酷町堂:5543 数字游戏(number)

0
0
已解决
徐紫尘
徐紫尘
高级光能
高级光能
#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
int n,t,a[10001],cnt=0,sum=0;
int main(){
    freopen("5543.in","r",stdin);
    freopen("5543.out","w",stdout);
    cin>>t;
    for(int i=1;i<=t;i++){
        cin>>n;
        for(int i=1;i<=n;i++){
            if(n%i==0)
                sum+=i;
        }
        cout<<sum<<endl;
    }
    fclose(stdin);
    fclose(stdout);
    return 0;
}

WA 20分,求找错


0
0
李显晨
李显晨
中级启示者
中级启示者
for(int i=1;i<=5000000;i++){//预处理,运用埃氏筛的核心思想
    for(int j=i;j<=5000000;j+=i){
       s[j]+=i;
    }
}
循环t次{
    scanf("%d",&n);//输入优化
    printf ("%d\n",s[n]);//输出优化
}
t是t组数据
n是输入的数字
s数组是预处理

 

李显晨在2020-11-02 18:39:08追加了内容

AC就是这么简单!!!

0
0
0
荣光峰
荣光峰
资深光能
资深光能

sum每输出一次要归零,再把n换成sqrt(n),这样能拿70分,一百分的很难写

0
我要回答