PAT B1087 有多少不同的值

最近在做PAT,做到这道题,我发现好多人都是用set做的,set当然很方便,但是我不知道老师出这道题的初衷是什么。我第一时间想到的其实我下面写的这种方法。先把数算出来存起来,再比较,把出现过的数设置成负数,再统计非负数的个数。提交之后AC了。
,,,

#include 
int num[10010];
int main(){
int n;
int diffnum = 0;
if(scanf("%d", &n)){
    for(int i = 1; i <= n; i++){
        int total = i / 2 + i / 3 + i / 5;
        num[i] = total;
    }
    
    for(int i = 1; i < n; i++){
        if(num[i] < 0){
            continue;
        }
        for(int j = i + 1; j <= n; j++){
            if(num[j]==num[i]){
                num[j] = -1;
            }
        }
    }
    
    for(int i = 1; i <= n; i++){
        if(num[i] >= 0){
            diffnum++;
        }
    }
    
    printf("%d\n", diffnum);
}
return 0;
}

,,,

你可能感兴趣的:(PAT B1087 有多少不同的值)