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