2009 - 幸运数字

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

幸运数字的定义为尾数为4或7的正整数。给定一个数字,问这个数字能表示成最少几个幸运数字之和,如果不能表示,输出-1。

例如21=14+7,所以输出2。

题目输入

一个数n,n<1,000,000,000

题目输出

每个测试数据输出一个数,表示n是最少几个幸运数字之和。

输入/输出样例

输入格式

21
3

输出格式

2
-1

C++解答

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char a[100];
int main()
{
    while(scanf("%s",a)!=EOF)
    {
        int len=strlen(a);
        if(a[0]=='-')
            printf("-1\n");
       else if(a[len-1]=='1')
        {
            if(len>1) printf("2\n");
            else printf("-1\n");
        }
        else if(a[len-1]=='4'||a[len-1]=='7')
            printf("1\n");
        else if(a[len-1]=='8')
            printf("2\n");
        else if(a[len-1]=='5'||a[len-1]=='2')
        {
            if(len>1) printf("3\n");
            else printf("-1\n");
        }

        else if(a[len-1]=='6'||a[len-1]=='9')
        {
            if(len>1) printf("4\n");
            else printf("-1\n");
        }
        else if(a[len-1]=='3')
        {
            if(len==2&&a[0]>='2')
                printf("5\n");
            else if(len>2)
                printf("5\n");
            else printf("-1\n");
        }
        else if(a[len-1]=='0')
        {
            if(len==2&&a[0]>='2')
                printf("5\n");
            else if(len>2)
                printf("5\n");
            else printf("-1\n");
        }
    }
}