[Tiền Giang - TS10 - 2025] Bài 2: Số Niven cân bằng
Xem dạng PDFMộ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
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; }
code day mn
include<bits/stdc++.h>
using namespace std; int main() { ios::syncwithstdio(false); cin.tie(NULL);
}