TS10 Tiền Giang 2025 - 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.



  • 0
    manhquan1  đã bình luận lúc 2, Tháng 7, 2026, 13:16

    include <bits/stdc++.h>

    define ll long long

    using namespace std; int check(ll n){ int tong=0; while(n){ tong+=n%10; n/=10; } return tong; } int check1(ll n){ int kq=check(n); if(n%kq==0){ return 1; } else return 0; } int check2(ll n){ int c=0,l=0; while(n){ int d=n%10; if(d%2==0){ c++; } else l++; n/=10; } return c==l; } int main() { iosbase::syncwith_stdio(false); cin.tie(NULL); ll n; cin>>n; for(ll i=n;i>=1;i--){ if(check1(i)&&check2(i)){ cout<<i; break; } } return 0; }


  • -1
    huygamer  đã bình luận lúc 30, Tháng 3, 2026, 12:56

    include<bits/stdc++.h>

    using namespace std; bool tv(long long n) { long long a=n; long long tong=0; while(n>0) { long long r=n%10; tong+=r; n/=10; } if(a%tong==0) return true; else return false; } bool sl(long long n) { long long d=0,d1=0; while(n>0) { long long r=n%10; if(r%2==0) d++; else d1++; n/=10; } if(d==d1) return true; else return false; } int main() { long long n;cin>>n; for(int i=n;i>=1;i--) { if(tv(i) && sl(i)) { cout<<i; break; } } return 0; }


  • 1
    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;
    

    }