uva 993 Product of digits (分解因子)

来源:互联网 发布:淘宝 铁红防锈漆 编辑:程序博客网 时间:2024/06/07 09:42

                        uva 993 Product of digits



题目大意:给定一个数N,要求出一个数,使得这个数的每一位相乘会等于N,且这个数的值最小。

解题思路:简单的分解因子。要注意的地方有两点:1) 因子从9开始向2遍历,可以保证位数最小; 2)当N等于1是最好特殊处理。



#include<stdio.h>#include<string.h>#include<stdlib.h>#include<algorithm>using namespace std;int n, dig[100000];int main() {int T;scanf("%d", &T);while (T--) {scanf("%d", &n);int flag = 0, cnt = 9, cnt2 = 0;if (n == 1) {printf("1\n");continue;}while (n != 1) {if (cnt == 2 && n % cnt != 0) {flag = 0;break;}if (n % cnt != 0) {cnt--;}else {flag = 1;n /= cnt;dig[cnt2++] = cnt;cnt = 9;}}if (!flag) printf("-1\n");else {for (int i = cnt2 - 1; i >= 0; i--) {printf("%d", dig[i]);}printf("\n");}}return 0;}


0 0
原创粉丝点击