1. Problem Chữ số chính giữa là lớn nhất
Thông thường khi làm việc với con số, người ta quan tâm tới các chữ số theo thứ tự từ đầu tới cuối. Tuy nhiên đôi khi có những ông thầy vừa mập vừa xấu vừa khó lại còn ác ổng hay quan tâm tới những chữ số ở giữa. Chữ số ở giữa theo định nghĩa là nó nằm “ngay chính giữa” của con số. Ví dụ với 532 thì chữ số “3” đứng chính giữa, nhưng trường hợp 5321 thì có tới hai chữ số ở chính giữa nên ta xem số chính giữa trong trường hợp này là “32”. Hãy viết chương trình tìm số có chữ số chính giữa là lớn nhất trong một đống số.
INPUT
Số tự nhiên n (n < 10000), đây là số lượng con số sẽ được nhập vào.
n con số tiếp theo chính là một đống số mà chúng ta quan tâm
OUTPUT
Con số có chữ số ở giữa là lớn nhất. Nếu có nhiều số cùng số chính giữa, in ra số được nhập vào sau cùng.
Ví dụ:
INPUT | OUTPUT |
5 983 24753 12345234 8823945 12345210923 | 12345234 |
5 211481011 68941705 828822730 784093896 355155199 |
2. Hướng dẫn bài Chữ số chính giữa là lớn nhất
– Đơn giản nhất là bạn nhập số nguyên vào ở dạng xâu kí tự
– Khi đó sau đó dùng strlen sẽ biết dc số phần tử, nếu số phần tử chẳn thì bạn lấy 2 số ở giữa, lẻ thì bạn lấy 1 số duy nhất.
– Bài này tất nhiên sẽ có nhìu cách làm khác như dùng /, %, nhưng ở đây mình sẽ tạm dùng cách này cho lẹ.
3. Code tham khảo bài Chữ số chính giữa là lớn nhất
// 16521215 #include <iostream> #include <cstring> using namespace std; char s[10000],x[10000]; int tinh() { int len=strlen(s); if (len%2!=0) return (s[len/2]-48); return (s[len/2 - 1]-48)*10 + (s[len/2]-48); } int main() { int n,i,j,gt=-1; cin>>n; for (i=1; i<=n; i++) { cin >> s; if (tinh()>=gt) { gt=tinh(); for (j=0; j<strlen(s); j++) x[j]=s[j]; x[j]='\0'; } } cout << x; return 0; }
Đặng Minh Tiến – UIT K11
Chỉ mỉnh cách dùng phép chia với
Chào bạn, cách dùng phép chia chắc vài hôm nữa mình mới viết được, tại nay chưa có tg @@