题目链接:http://acm.csust.edu.cn/problem/3025
Description
咚咚咚!在安静的7教417夜晚,车神带来了一堆神秘的数字。
而417的小伙伴都只钟爱于包含4和7的数字。
例如数字:747,4,7747,4,7是他们钟爱的数字,而476,5,27476,5,27不是。
车神灵机一动,突然问:对于给定的数字n,能否找出各个数位上数字和为n的最小钟爱数字。
如果找到则输出这个最小数, 如果找不到,则输出“YingYingYing”。
Input
一行,一个整数n(1≤n≤1e6)代表要求车牌号的各个数位上数字的和
Output
输出仅一行,为满足条件的最小车牌号,如果不存在这个车牌号就输出“YingYingYing”。
Sample Input 1
11
Sample Output 1
47
Sample Input 2
10
Sample Output 2
YingYingYing
很简单地模拟一下即可,要求输出最小的数字,那么也就是说当7最多的时候该数字最小(长度短)。
我们直接n/7就可以知道最多可以放几个7了,然后往下筛选符合条件的,即扣掉x个7后的余值模4为0。最后把所有4放在前面,7放在后面。
以下是AC代码:
#include <bits/stdc++.h> using namespace std; int main() { int n; scanf ("%d",&n); int four,seven,mark=0; seven=n/7; for (int i=seven; i>=0; i--){ if ((n-7*i)%4==0) { four=(n-7*i)/4; mark=1; seven=i;break; } } if (!mark) printf ("YingYingYing "); else { for (int i=1; i<=four; i++) printf ("4"); for (int i=1; i<=seven; i++) printf ("7"); printf (" "); } return 0; }