Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift
Cho số nguyên dương ~n~ và dãy ~n~ số nguyên dương ~a_1, a_2, …, a_n~. Ta gọi một số ~a_i~ là độc thân nếu ~a_i ≠ a_j, \forall j ≠ i~. Hãy đếm số lượng số độc thân trong dãy số trên.
Input
- Dòng đầu ghi số nguyên dương ~n~.
- Dòng thứ hai chứa ~n~ số nguyên dương ~a_1, a_2, …, a_n~. Hai số liên tiếp được ghi cách nhau một dấu cách.
Giới hạn:
- ~80\%~ số điểm có ~n ≤ 10^3~ và ~1 ≤ a_i ≤ 10^6~;
- ~20\%~ số điểm có ~10^3 < n ≤ 10^6~ và ~1 ≤ a_i ≤ 10^6~.
Output
- Một dòng duy nhất ghi số nguyên là số lượng số độc thân tìm được.
Sample
Input #1
5
1 2 2 3 1
Output #1
1
Hint
Quan sát #1, có duy nhất một số độc thân là số ~3~.
Problem source: Chuyên Sơn La Online Judge
Bình luận
c++ full ac
ai cho mình ý tưởng bằng python với, mịnh làm toàn bị time out
ý tưởng của mình khá tồi nhưng vẫn ac được:
B1 Mình sắp xếp list theo kiểu tăng dần:
B2 Đuyệt 1 vòng for:
B3 Nếu phần tử đó là số độc thân thì nó phải khác phần tử đứng sau nó và cả phần tử đứng trước đó
B4 Khi bạn duyệt đến phần tử cuối cùng thì bạn chỉ cần so sánh với phần tử đứng sau nó
n = int(input())
m = input().split()
a = list(map(int,m))
a.sort()
dem = 0
for i in range(n):
print(dem)
include<bits/stdc++.h>
using namespace std; int main(){ iosbase::syncwith_stdio(false); cin.tie(0);cout.tie(0); int n; cin>>n; int a[n]; for(int i=1;i<=n;i++){ cin>>a[i]; } sort(a+1,a+n+1); int dem=0; if(a[1]!=a[2]) dem++; if(a[n-1]!=a[n]) dem++; for(int i=2;i<n;i++){ if((a[i]!=a[i-1])&&(a[i]!=a[i+1])) dem++; } cout<<dem; return 0; }
include <bits/stdc++.h>
using namespace std; int n,x,a[1000006]={},d=0; int main() { iosbase::syncwith_stdio(false);cin.tie(NULL); cin>>n; while(n--) { cin>>x; a[x]++; } for(auto it:a)if(it==1)d++; cout<<d; }
Đã ac 100%. Nếu ai không biết làm thì tham khảo. Nhớ cho mình 1 vote nhé. Chương trình được viết bởi ngôn ngữ C++
#include <bits/stdc++.h>
using namespace std; unsigned long long n,a[1000001],i,f[1000001],s,d=0; int main() { cin>>n; for(i=1;i<=n;i++) { cin>>a[i]; f[a[i]]++; } for(i=1;i<=n;i++) { if(f[a[i]]==1) d++; } cout<< d ; }
mảng phân phối
áp dụng mảng phân phối là ra
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
chê