一道笔试题目

来源:互联网 发布:python与opencv 编辑:程序博客网 时间:2024/05/05 06:19

题目描述:编写一个函数,输入一个正整数n,返回一个最小的正整数m(m至少包含两位数),使得m的各位乘积等于n,如果某个n不存在这样的m,则返回-1,

例如:

输入:12

输出:26

输入:100

输出:455

输入:7

返回:17


#include<iostream>using namespace std;int func(int n){int num=0;int s;int m[10]={0};int p=0;//数组m的下标int sum=n;int i=2;//1~81得用两位数来表示int q=9;bool falg=false;while(sum>9*q)//计算大于81的数应该用几位数字表示  82~729之间用3位数表示{i++;q*=9;}int r=i-1;//后面要从数组m的i-1位开始输出,记录下i-1的值while(i)//找出满足条件的i位数{for(int j=9;j>=1&&!falg;j--){s=sum;if(sum%j==0){falg=true;m[p++]=j;sum/=j;}}if(s==sum&&sum>=10){return -1;}--i;falg=false;}for(;r>=0;r--){num=num*10+m[r];}return num;}int main(){int n;//for(;;)//{cin>>n;int sum=func(n);cout<<sum<<endl;//}system("pause");return 0;}
运行结果:

题目来自网络。

5 0
原创粉丝点击