[C++] Chữ số chính giữa là lớn nhất

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ụ:

INPUTOUTPUT
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

2 thoughts on “[C++] Chữ số chính giữa là lớn nhất

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *