第十五屆中北大學算法與程序設計競賽(公開賽)G.數位操作1
題目描述
給你一個正整數 找到最小的某個數據 ans (ans >9)
要求 ans 的每一數位(個位 十位 百位 千位…) 乘積與 n 相等, 不存在輸出-1
PS:多組輸入,輸入直到文件結束
輸入描述:
輸入一個小於等於 的數正整數n
輸出描述:
如果可以找到 某個數據 ans 數位乘積與 n 相等 那麼便輸出 ans
否則輸出 -1
示例1
輸入
100
12
輸出
455
26
直接模擬,每一次從 裏面挑一個取餘爲 0 的數存下來,如果不存在則輸出 -1,最後排序輸出即可~
有一個坑點是小於等於9的數 就輸出 ,AC代碼如下:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
main(){
ll n;
while(cin>>n){
ll m=n;
vector<int>s;
int flag;
while(n!=1){
flag=0;
for(ll i=9;i>1;i--){
if(n%i==0){
flag=1;
s.push_back(i);
n/=i;
break;
}
}
if(flag==0) break;
}
if(!flag){puts("-1");continue;}
if(m<=9) {putchar('1');cout<<m<<endl;continue;}
sort(s.begin(),s.end());
for(auto i:s) cout<<i;
puts("");
}
}