题目链接:http://codeforces.com/problemset/problem/109/A
————————————————————————————————————————
题目思路:
先找位数少的,再找4多的。。end。。
————————————————————————————————————————
题目细节:
一开始结果用long long int 型存的,真是犯傻了。。明显的最后结果会灰常大。
后来改成单个输出,过。
————————————————————————————————————————
#include <iostream>
#include<stdio.h>
using namespace std;
#define MAX 9999999
int main()
{
int n = 0;
int i = 0,j = 0;
int mi = MAX,mj = MAX;
scanf("%d",&n);
i = n/4;
for(i = i;i>=0;i--)
{
if((n-i*4)%7 == 0)
{
j = (n-i*4)/7;
if(mi+mj>i+j)
{
mi = i;
mj = j;
}
if(mi+mj == i+j)
{
if(mi>i)
{
mi = i;
mj = j;
}
}
}
}
if(mi == MAX) printf("-1");
else
{
for(j = 1;j<=mi;j++)
printf("4");
for(j = 1;j<=mj;j++)
printf("7");
}
return 0;
}