51Nod-1435-位数阶乘
来源:互联网 发布:广东省网络医院 后窖 编辑:程序博客网 时间:2024/06/07 05:02
ACM模版
描述
题解
这道题猛一看比较咋呼人,但是仔细分析下来,会发现十分简单,关键是拆解每一位数,拆解成质因数的形式,然后统计每个质因数一共出现的次数,在寻找正整数X
(ans[]
)时,只要按从大到小的顺序凑质因数就可以了,凑够了也就是最后的答案了。
代码
#include <iostream>using namespace std;const int MAXN = 16;const int MAXM = 10;const int MAXA = 300;char num[MAXN];int num_[MAXN];int dig[MAXM];int ans[MAXA];int main(int argc, const char * argv[]){ int n; cin >> n; cin >> num; for (int i = 0; i < n; i++) { num_[i] = num[i] - '0'; for (int j = 2; j <= num_[i]; j++) { if (j == 4) { dig[2] += 2; } else if (j == 6) { dig[2]++; dig[3]++; } else if (j == 8) { dig[2] += 3; } else if (j == 9) { dig[3] += 2; } else { dig[j]++; } } } int pos = 0; for (int i = 7; i > 1; i--) { if (dig[i] > 0) { switch (i) { case 7: for (int j = 0; j < dig[7]; j++) { ans[pos++] = 7; } dig[2] -= dig[7] * 4; dig[3] -= dig[7] * 2; dig[5] -= dig[7]; break; case 5: for (int j = 0; j < dig[5]; j++) { ans[pos++] = 5; } dig[2] -= dig[5] * 3; dig[3] -= dig[5]; break; case 3: for (int j = 0; j < dig[3]; j++) { ans[pos++] = 3; } dig[2] -= dig[3]; break; case 2: for (int j = 0; j < dig[2]; j++) { ans[pos++] = 2; } break; } } } for (int i = 0; i < pos; i++) { cout << ans[i]; } cout << '\n'; return 0;}
0 0
- 51Nod-1435-位数阶乘
- 51nod 1435:位数阶乘
- 51nod-1435 位数阶乘
- 51nod 1435 位数阶乘
- 51nod 1435 位数阶乘
- 51 nod 1435 位数阶乘
- 51nod 1435 位数阶乘 找规律
- 51nod 1435 位数阶乘 (简单题)
- 51nod 1435 位数阶乘 (思维水题)
- 51nod 1435 位数阶乘 (手动计算)
- 51nod 1058 阶乘的位数
- 1435 位数阶乘
- 1435 位数阶乘
- 51NOD1435 位数阶乘
- 51Nod-1057-N的阶乘
- 51Nod-1058-N的阶乘的长度
- 51nod 1435 数位阶乘 思路题
- C问题---1000的阶乘的位数
- Windows下使用jsoncpp
- 清纯不做作的RxBus,用法与EventBus 一致
- storyBoard中给tableView添加header和footer
- Mybatis Parameters jdbcType
- CGContextRef绘图-iOS球形波浪加载进度控件-HcdProcessView详解
- 51Nod-1435-位数阶乘
- USACO2014Open Silver GPS的决斗
- Oracle递归查询父子关系记录
- SwipeRefreshLayout配合RecyclerView实现上拉加载更多下拉刷新
- <Android 基础(二十一)> Android 屏幕适配
- RPC 的概念模型与实现解析
- 最简单的AR开发入门教程(二)
- 区间dp裸题 石子归并(不是环
- winscp实现跳板机连接