CF 109a
题意
给定数字和 n
一个只含数字 4 和 7 的数字,满足其数字和为 n ,求最小满足题意的数
分析
显然,可以把每一位都分一个 4 ,然后检查是否能将剩下的和部分 4 组合成尽可能多的 7
输出最小即可
代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
scanf("%d" , &n);
if(n < 4)
{
printf("-1");
return 0;
}
int maxn = -1;
for(int i = 0 ; ; i++)
{
if((i << 3) - i > n)
{
break;
}
if((n - (i << 3) + i) % 4 == 0)
{
maxn = i;
}
}
if(maxn == -1)
{
printf("-1");
return 0;
}
for(int i = 1 ; i <= (n - (maxn << 3) + maxn) >> 2 ; i++)
{
printf("4");
}
for(int i = 1 ; i <= maxn ; i++)
{
printf("7");
}
return 0;
}