TRZ_2007 的博客

TRZ_2007 的博客

题解 CF109A 【Lucky Sum of Digits】

posted on 2019-10-30 18:50:39 | under 题解 |

Remarks

在集训的时候写题解……

瑟瑟发抖……

Solution

让我们一数学的角度来考虑这一道题目。

第一点:如何确定这个数字是最小的
首先TA的位数一定要小,比如说: $9 <111111111$ ,然而他们的各个位数之和是相同的,都是9 。

其次在保证位数的情况下,让小的数更靠前,比如说: $19 < 91$ 。

然后就可以使用了。

Code

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