[Tiền Giang - TS10 - 2025] Bài 2: Số Niven cân bằng

Xem dạng PDF

Gửi bài giải

Điểm: 8,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Một số nguyên dương được gọi là số ~\text{Niven}~ (hoặc số ~\text{Harshad}~) nếu nó chia hết cho tổng các chữ số của nó.

Một số được gọi là số ~\text{Niven}~ cân bằng nếu số đó là số ~\text{Niven}~ và có số lượng chữ số chẵn bằng số lượng chữ số lẻ.

Ví dụ: ~10, 12, 45~ là các số ~\text{Niven}~ cân bằng, còn ~14, 25, 28~ không là các số ~\text{Niven}~ cân bằng.

Yêu cầu: Cho một số nguyên dương ~n~, em hãy tìm số ~\text{Niven}~ cân bằng lớn nhất nhỏ hơn hoặc bằng ~n~.

Input

Gồm một số nguyên dương ~n~ ~(10 \le n \le 10^6)~.

Output

Một số nguyên là đáp án của bài toán.

Sample Input 1

1212

Sample Output 1

1212

Giải thích

Giải thích: test 1, với ta có số ~1212~ là số ~\text{Niven}~ cân bằng lớn nhất nhỏ hơn hoặc bằng ~n~ vì số ~1212~ có số lẻ và ~2~ chữ số chẵn, đồng thời tổng các chữ số là ~6~ nên ~1212~ chia hết cho ~6~.


Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 2
    tikl20tok  đã bình luận lúc 4, Tháng 3, 2026, 14:05

    code day mn

    include<bits/stdc++.h>

    using namespace std; int main() { ios::syncwithstdio(false); cin.tie(NULL);

    long long n;
    cin>>n;
    long long i,j;
    for (i=n;i>=1;i--)//ta ko cho so 0 vao day vi phep chia 0 ra vo so nghiem
    {
        long long tong=0;
        long long demch=0,demle=0;
        j=i;
        while (j>0)
        {
            tong+=j%10;
            if ((j%10)%2==0)
            {
                demch+=1;
            }
            else
            {
                demle+=1;
            }
            j/=10;
        }
        if (i%tong==0&&demch==demle)
        {
            cout<&lt;i;
            break;
        }
    }
    
    
    
    return 0;
    

    }