题解 CF109A 【Lucky Sum of Digits】

TRZ_2007

2019-10-30 18:50:39

Solution

## 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); } } ```