Codeforces 515C. Drazil and Factorial

//codeforces 515C. Drazil and Factorial

#include <iostream>

#include <cstring>

#include <cstdio>

using namespace std;



/**

4!=2!*2!*3!

6!=1*2*3*4*5*6=5!*3!

8!=1*2*3*4*5*6*7*8=7!*2!*2!*2!

9!=1*2*3*4*5*6*7*8*9=7!*2!*3!*3!

*/



int main()

{

    char a[20];

    int ch[10] = {0};

    int n;

    cin >> n;

    cin >> a;

    for (int i = 0; i < n; ++i) {

        if (a[i] == '4') {

            ch[2] += 2;

            ++ch[3];

        } else if (a[i] == '6') {

            ++ch[3];

            ++ch[5];

        } else if (a[i] == '8') {

            ++ch[7];

            ch[2] += 3;

        } else if (a[i] == '9') {

            ++ch[7];

            ++ch[2];

            ch[3] += 2;

        } else if (a[i] == '0' || a[i] == '1') {

            continue;

        } else {

            ++ch[a[i] - '0'];

        }

    }

    for (int i = 9; i >= 2; --i) {

        while (ch[i]) {

            putchar(i + '0');

            --ch[i];

        }

    }



    return 0;

}

  只是觉得很神奇的做法,但不太明白为什么……先记下来……

你可能感兴趣的:(codeforces)