codeforces 515c Drazil and Factorial 分类讨论

来源:互联网 发布:隐马尔可夫算法 编辑:程序博客网 时间:2024/04/30 14:43

题意:

思路:

每个阶乘肯定是分得越多个阶乘数就越好。

分类讨论。

1. 0和1直接忽略。

2. { 2,3,5,7 }这些数的阶乘是不能再分得,原数即可。

3.   4:{3, 2, 2},6:{5, 3}  8:{7, 2, 2, 2} 9:{7, 3, 3, 2}。

code:

#include <bits/stdc++.h>using namespace std;int n;string str;int prime[] = {2, 3, 5, 7};int t[] = {4, 6, 8, 9};int a[][5] = {{3, 2, 2}, {5, 3}, {7, 2, 2, 2}, {7, 3, 3, 2}};int cnt[10];void solve() {    for(int i = 0;i < n; i++) {        if(str[i] == '1'|| str[i] == '0') continue;        bool flag = false;        for(int j = 0;j < 4; j++) {            if(str[i] == prime[j]+'0') {                cnt[prime[j]]++;                flag = true;                break;            }        }        if(flag) continue;        for(int j = 0;j < 4; j++) {            if(str[i] == t[j]+'0') {                for(int z = 0;z < 5; z++) {                    cnt[a[j][z]]++;                }                break;            }        }    }    for(int i = 9; i >= 1; i--) {        for(int j = 0;j < cnt[i]; j++)            cout<<i;    }    cout<<endl;}        int main() {    cin>>n>>str;    solve();    return 0;}


0 0
原创粉丝点击