首页 > 代码库 > 一道笔试题目
一道笔试题目
题目描述:编写一个函数,输入一个正整数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个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。