题解 CF109A 【Lucky Sum of Digits】
TRZ_2007
2019-10-30 18:50:39
## Remarks
在集训的时候写题解……
瑟瑟发抖……
## Solution
让我们一数学的角度来考虑这一道题目。
第一点:如何确定这个数字是最小的
首先TA的位数一定要小,比如说:$9 <111111111$,然而他们的各个位数之和是相同的,都是9 。
其次在保证位数的情况下,让小的数更靠前,比如说: $19 < 91$。
然后就可以使用了。
## Code
```cpp
#include <bits/stdc++.h>
using namespace std;
int n;
bool check(int num) {
for(int i=0;i<=num/4;i++) {//优先考虑4的个数
if((num - i * 4) % 7 != 0) continue;//不是就别输了
else {
for(int k=1;k<=i;k++) printf("4");//先输出那一拨4
for(int k=1;k<=(num - i * 4)/7;k++) //接下来再输出7 printf("7");
puts("");
return true;
}
}
return false;
}
int main()
{
scanf("%d",&n);
if(!check(n)) {//首先这个数字必须是合法的,不然算个gost
puts("-1");
exit(0);
}
}
```