1. 程式人生 > >#6 Ahoi2005 DAY2 COMMON 約數研究

#6 Ahoi2005 DAY2 COMMON 約數研究

Time Limit: 1000 ms Memory Limit: 128 MB

科學家們在samuel星球上的探險得到了豐富的能源儲備,這使得空間站中…… 這道題小編第一反應是暴搜,但是我特特特特別害怕TLE, 所以呢這道題用暴搜的可以去試一試,但是我的做法是正解 程式碼:

#include<cmath>
#include<cstdio>
#include<cstring>
using namespace std;
int n,ys[1000001],ans;//ys表示約數,對應每一個數
void plus(int x){
    for(int i=1;(i*x)<=n;i++){
        ys[i*x]++;
    }
}
int
main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ plus(i);//把i的倍數全部++,就是包含該因數(即是i的倍數)就++ } for(int i=1;i<=n;i++){ ans+=ys[i];//求和 } printf("%d",ans); }

就這麼短,關鍵想到有點難,大部分人都可能想到直接列舉 想不到NOI的難度,想到NOIP的難度。