2009 - 幸运数字
时间限制 : 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"); } } }