#6 Ahoi2005 DAY2 COMMON 約數研究
阿新 • • 發佈:2018-12-10
Time Limit: 1000 ms Memory Limit: 128 MB
這道題小編第一反應是暴搜,但是我特特特特別害怕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的難度。