1. 程式人生 > 其它 >PAT乙-1087 有多少不同的值 (20分)

PAT乙-1087 有多少不同的值 (20分)

技術標籤:PAT乙

1087 有多少不同的值 (20分)

這道題目看上去有三種想法,第一種開陣列標記,第二種,利用MAP標記,第三種,利用SET標記;

方法1:

#include<iostream>
#include<algorithm> 
using namespace std;
#include<string>
int main(){
    int n;
    cin>>n;
    int a[100100]={0};
    for(int i=1;i<=n;i++){
    	int c=i/2+i/3+i/5;
    	a[c]++;
    }
    int count=0;
    for(int i=0;i<100100;i++){
    	if(a[i]) count++;
    }
    cout<<count<<endl;
}

法2:利用MAP

#include<iostream>
#include<algorithm> 
using namespace std;
#include<map>
#include<string>
int main(){
    map<int,int> a;
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        a[i/2+i/3+i/5]++;
    }
    cout<<a.size()<<endl;
}

方法3:set

#include<iostream>
#include<algorithm> 
using namespace std;
#include<map>
#include<set>
#include<string>
int main(){
    set<int> a;
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        a.insert(i/2+i/3+i/5);
    }
    cout<<a.size()<<endl;
}