Khôi Ròm
February 04, 2021 - Thursday, 4 February 2021
Số may mắn theo quan niệm của người Mỹ là số mà các chữ số của nó chỉ gồm số 4 và 7. Ví dụ: 47, 744, 4
là số may mắn còn 5, 17, 467 thì không phải. Số siêu may mắn là số may mắn có số lượng chữ số 4 và 7 bằng
nhau. Ví dụ: 47, 7744, 474477 là số siêu may mắn còn 4, 744, 467 thì không phải.
Task
Hãy lập trình tìm số siêu may mắn nhỏ nhất lớn hơn số nguyên dương n cho trước.
Input
• Dòng đầu tiên chứa số nguyên dương T là số testcase thỏa 1 ≤ T ≤ 100.
• T Dòng tiếp theo chứa số nguyên dương n thỏa 1 ≤ n ≤ 109
, n không chứa chữ số 0 đứng trước.
Output
• Ứng với mỗi testcase in ra số siêu may mắn nhỏ nhất lớn hơn hoặc bằng n, mỗi testcase in trên một dòng.
Samples
input
2
4500
47
output
4747
47
Code:
#include <bits/stdc++.h>
using namespace std;
int check_LuckyNumber(long long n)
{
int i = 0 , j = 0 , k = 0;
while(n != 0)
{
int t = n % 10;
if(t == 4)
i++;
if(t == 7)
j++;
if(t != 4 && t != 7)
{
k++;
break;
}
n = n / 10;
}
if(i == j && i != 0 && j != 0 && k == 0)
return 1;
if(i != j && k != 0);
return 0;
}
int count(long long n)
{
int j = 0;
while(n != 0)
{
long long t = n % 10;
j++;
n = n / 10;
}
return j;
}
long long sum_check(long long n)
{
long long t;
for(long long i = n ; i < (n+pow(10,count(n)-1))-1; i++)
{
if(check_LuckyNumber(i) == 1)
{
return i;
break;
}
}
}
int main()
{
long long t,n;
cin>>t;
int i = 0;
while(i < t)
{
cin>>n;
if(check_LuckyNumber(n) == 0)
cout<<sum_check(n);
if(check_LuckyNumber(n) == 1)
cout<<n;
cout<<endl;
i++;
}
return 0;
}