标签:
标题叙述性说明:写一个函数,输入一个正整数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; }执行结果:
从网络主题。
版权声明:本文博主原创文章。博客,未经同意不得转载。
标签:
原文地址:http://www.cnblogs.com/lcchuguo/p/4913992.html