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
Input:
stdin
Output:
stdout
Tác giả:
Nguồn bài:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch
Cho mảng A[] gồm N phần tử, bạn hãy tách từng chữ số của các số trong mảng A[] và đếm xem mỗi chữ số xuất hiện bao nhiêu lần. Chú ý trong mảng A[] có thể có số âm
Đầu vào
Dòng 1 là N : số phần tử trong mảng
Dòng 2 là N số trong mảng viết cách nhau 1 dấu cách
Giới hạn
1<=N<=10^6
-10^9<=A[i]<= 10^9
Đầu ra
• In ra các chữ số xuất hiện trong các số ban đầu trong mảng theo thứ tự tăng dần kèm theo số lần xuất hiện của chúng
Ví dụ :
Input 01
15
-3097 3584 4443 2088 1173 4029 5756 1436 4038 8538 -2054 2890 2376 3745 2684
Output 01
0 6
1 3
2 6
3 9
4 10
5 6
6 4
7 5
8 8
9 3
Bình luận
Code dùng string
include<bits/stdc++.h>: tiện thì tiện thật, nhưng trong môi trường thực tế (CI/CD pipelines, build systems như Bazel/CMake, cross-platform), nó là gánh nặng. Không rõ dependency, không portable, làm tăng compile-time và dễ bug khó trace. Gọi đúng <iostream>, <sstream>, <map>... sẽ giúp người sau biết code này xài gì – kể cả khi không chạy.
Macro hóa main(): bạn viết #define __Kwuengcpp int main() chắc cho vui hoặc theo style cá nhân. Nhưng thật sự, khi người khác phải debug hệ thống lúc 3h sáng, int main() sẽ cứu họ. Đừng để người sau phải đoán nghĩa macro, hay phải Ctrl+Click 3 lần mới trace được entry point.
getline() không check lỗi: đây là lỗi phổ biến. Khi cin fail hoặc còn dư \n, getline() sẽ đọc chuỗi rỗng, và bug xuất hiện một cách âm thầm. Trong môi trường thật, "âm thầm sai" đáng sợ hơn "crash toạc ra". Nếu đã dùng getline() thì nên cin.ignore() cẩn thận và có check chuỗi hợp lệ.
cerr << TIME nên wrap trong #ifdef DEBUG: thói quen log thời gian là tốt – nhưng chỉ khi log đó không phá output chuẩn. Ở prod, việc xuất log sai chỗ khiến test auto fail, JSON sai format, hoặc CI báo đỏ. Đừng để thói quen debug làm team QA chửi vì “code chạy đúng mà vẫn fail test”.
Biến không dùng như n thì nên xóa: nó không sai – nhưng nó khiến người đọc pause lại 0.5s, tự hỏi: "n để làm gì?". Viết code tốt không chỉ là “cho máy hiểu” mà là “cho người khác đọc không thắc mắc”.
Tóm lại: code bạn chạy đúng, cách làm stringstream cũng rất ổn. Nhưng nếu bạn muốn làm lâu dài trong nghề, hãy bắt đầu viết code như thể: 3 tháng sau người maintain là chính bạn lúc đang bận, mệt, gấp deadline. Khi đó, sự rõ ràng – chứ không phải sự “ngầu” – là thứ được cảm ơn.
Viết code sạch sẽ, rõ ràng, và thực dụng là sự tử tế với cả chính bạn và đồng đội. Và nếu bạn đã đọc đến đây mà thấy “ừ đúng” – thì chúc mừng, bạn đang thoát khỏi tư duy làm code cho xong, để bước vào tư duy làm sản phẩm sống được lâu dài.
bro thật sự phân tích code của tôi💀, đáng sợ hơn văn mẫu AI
:))) Vì tôi từng debug code 3h sáng, mà chính tôi viết hồi năm nhất :))) nên giờ thấy macro hoá main() là hơi lạnh sống lưng.
Phân tích không phải để dìm đâu, mà là để bro sau này nhìn lại không phải tự chửi mình thời trẻ trâu 🤝
Bro tâm huyết quá, blog oj cần thêm những người như bro :3.
Việc post source codes full ac ở phần cmt là một ý tưởng tốt. Ít nhất là nó sẽ giúp bạn nếu bạn không làm được để chạy full ac để xem các source codes khác như nào mà học hỏi theo.
Nhưng khổ nổi tôi cũng không hiểu tại sao phần bình luận cứ luôn bị downvoted.
Hỏi thân thiện, downvoted. Post source codes, downvoted. Góp ý, downvoted.
Cái nút downvote nhấn là được giải độc đắc hay gì ấy lmao xD.
include <iostream>
include <array>
include <cmath>
using namespace std;
int main() { ios::syncwithstdio(false); cin.tie(nullptr);
}
include <bits/stdc++.h>
using namespace std;
int main() { int n; cin >> n; int a[n]; map<int,int> mp; for(int i=0;i<n;i++){ cin >> a[i]; int x=a[i]; if(x==0) mp[0]++; else{ if(x<0) x=-1*x; while(x){ int k=x%10; x=x/10; mp[k]++; } } } for(auto v:mp){ cout<< v.first<<" "<<v.second<
FULL AC
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.
Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.