数的分解
时间限制:65535 KB
难度:1
- 描述
-
你的任务是找到一个最小的正整数Q,使Q的各位数的乘积等于N。
- 输入
- 最多450组测试数据。数据以EOF结尾。
输入一个整数N(0 ≤ N ≤ 400)。 - 输出
- 输出Q,如果Q不存在则输出−1。
- 样例输入
-
10 5
- 样例输出
-
25 5
- 来源
- ural
1 #include<stdio.h> 2 #include<iostream> 3 4 using namespace std; 5 6 int main(){ 7 int n; 8 while(scanf("%d",&n)!=EOF){ 9 10 int i = 0,ge,shi,bai,qi; 11 for(;i <= 10000 && n;i++){ 12 if(i < 10){ 13 if(i == n) 14 break; 15 } 16 else if(i < 100){ 17 ge = i % 10; 18 shi = i / 10; 19 if(ge * shi == n) 20 break; 21 } 22 else if(i < 1000){ 23 ge = i % 10; 24 shi = (i / 10)%10; 25 bai = i / 100; 26 if(ge * shi * bai == n) 27 break; 28 } 29 else { 30 ge = i % 10; 31 shi = (i / 10)%10; 32 bai = (i / 100)%10; 33 qi = i / 1000; 34 if(ge * shi * bai * qi== n) 35 break; 36 } 37 } 38 if(i==10001) 39 cout<<-1<<endl; 40 else if(n==0) 41 cout<<10<<endl; 42 else 43 cout<<i<<endl; 44 } 45 46 return 0; 47 }