Description
在数字界有一类被叫做幸运数的数,其实幸运数的组成很简单。如果一个数所有位数上的数字都是4或7的话就叫做幸运数。比如444444, 44747是幸运数而57774747就不是。
现在mwy遇到了一个小问题,他只知道一个幸运数所有位数上数字之和,他想知道这个数最小会是多少,聪明如你,快来帮帮我们的mwy吧。
Input
输入一个数n(n<=300)。
Output
如果可以找到这样的幸运数,就输出这个幸运数,否则就输出-1。
#include <stdio.h>
#include <stdlib.h>
/*位数少;4,7同时存在 4在前 */
int main(int argc, char *argv[]) {
int n,i,j,numi=-1,numj=-1;
scanf("%d",&n);
for(i=0;i<=n/4;i++)
{
for(j=0;j<=n/7;j++)
{
if(i*4+j*7==n)
{
if(j>numj)
{
numi=i;numj=j;
}
}
}
}
if(numj==-1)
{
printf("-1");
}
else
{
for(i=0;i<numi;i++)
printf("4");
for(j=0;j<numj;j++)
printf("7");
printf("\n");
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
/*
n%7 4 7
0 0 n/7
1 2 n/7-1
2 4 n/7-2
3 6 n/7-3
4 1 n/7
5 3 n/7-1
6 5 n/7-2
*/
int main(int argc, char *argv[]) {
int n,i,j;
scanf("%d",&n);
switch(n%7)
{
case 0:i=0,j=n/7; break;
case 1:i=2,j=n/7-1; break;
case 2:i=4,j=n/7-2; break;
case 3:i=6,j=n/7-3; break;
case 4:i=1,j=n/7; break;
case 5:i=3,j=n/7-1; break;
case 6:i=5,j=n/7-2; break;
}
if(j<0)
{
printf("-1\n");
}
else
{
for(i=0;i<(n-j*7)/4;i++)
printf("4");
for(i=0;i<j;i++)
printf("7");
printf("\n");
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
/*
n%7 4 7
0 0 n/7
1 2 n/7-1
2 4 n/7-2
3 6 n/7-3
4 1 n/7
5 3 n/7-1
6 5 n/7-2
*/
int main(int argc, char *argv[]) {
int n,i,j,a[7]={0,2,4,6,1,3,5},b[7]={0,-1,-2,-3,0,-1,-2};
scanf("%d",&n);
i=a[n%7];
j=n/7+b[n%7];
if(j<0)
printf("-1");
else
{
for(i=0;i<(n-j*7)/4;i++)
printf("4");
for(i=0;i<j;i++)
printf("7");
}
return 0;
}