输入一个正整数n,返回一个最小正整数m(m至少是2位数),使得m的各位乘积等于n,例如输入36,输出49,输入100,输出455,对于某个n不存在这样的m,请返回-1。

输入一个正整数n,返回一个最小正整数m(m至少是2位数),使得m的各位乘积等于n,例如输入36,输出49,输入100,输出455,对于某个n不存在这样的m,请返回-1。
package hope20141002_01;
import java.util.*;
public class JingDong {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("请输入一个正整数:");
			int k=fun(getString());
			System.out.println("输出最小正整数:"+k);
	}
	public static Integer getString(){
		return Integer.parseInt((new Scanner(System.in)).nextLine());
	}
	public static int fun(int n1){
		int n=n1;String k="";
		if(n<=9){
			return 10+n;
		}
		for(int i=9;i>=2;){
			if(n%i==0){
				k+=i;
				n=n/i;
				continue;
			}else
				i--;
		}
		int j=0;int n2=1;
		while(j<k.length()){
			n2=n2*Integer.parseInt(k.charAt(j)+"");
			j++;
		}
		if(n2!=n1){
			return -1;
		}
		String temp="";
		for(int i=k.length()-1;i>=0;i--){
			temp+=k.charAt(i);
		}
		return Integer.parseInt(temp);
	}
}

时间: 2024-10-12 02:15:15

输入一个正整数n,返回一个最小正整数m(m至少是2位数),使得m的各位乘积等于n,例如输入36,输出49,输入100,输出455,对于某个n不存在这样的m,请返回-1。的相关文章

17、把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1. NOTE:给出的所有元素都大于0,若数组大小为0,请返回0. eg: 输入 3 4 5 1 2 输出 1 思路:用二分法查找最小元素 三种情况: (1)rotateArray[mid] >rotateArray[high]: like:[x,x,x,6,x,x,2],此时最小数字一

输入一个正数x和一个正整数n,求下列算式的值。要求定义两个调用函数:fact(n)计算n的阶乘;mypow(x,n)计算x的n次幂(即xn),两个函数的返回值类型是double

题目描述 输入一个正数x和一个正整数n,求下列算式的值.要求定义两个调用函数:fact(n)计算n的阶乘:mypow(x,n)计算x的n次幂(即xn),两个函数的返回值类型是double. x - x2/2! + x3/3! + ... + (-1)n-1xn/n! ×输出保留4位小数. 输入 x n 输出 数列和 样例输入 2.0 3 样例输出 1.3333 提示 无 来源 无 1 #include<stdio.h> 2 double fact(int); 3 double mypow(in

设计一个方法,并输入一个数可以返回一个结果

/*做一个函数,我传一个数字给你,你返回一个结果给我. * 要求:如果数字小于100,则返回实际输入的数字: * 如果大于100小于200,则返回'100+': * 如果大于200小于300,则返回'200+':以此类推. */package homework; import java.util.Scanner; public class shuzi { public void shuzu() { Scanner input = new Scanner(System.in); System.ou

[算法]请用A中元素组成一个大于k的最小正整数

给定A[]={0,1,3,8},A是U={0,1,2,3,4,5,6,7,8,9}的子集,k是正整数,请用A中的元素组成一个大于k的最小正整数. 思路: 1.使用flag数组标记A中的元素, bool flag[10]; 顺便记录A中的最小元素 bool flag[10] = {0,0,0,0,0,0,0,0,0,0}; int min = 10; for(int i = 0; i < n; ++i){ flag[a[i]] = true; min = min < a[i] ? min : a

5、输入一个不超过5位的正整数,编程实现:求出它是几位数,分别输出每位数字。

1 #include<stdio.h> 2 #include<math.h> 3 int flws(int); 4 void main() 5 { 6 int n,j,k=0; 7 printf("请输入一个正整数:\n"); 8 scanf("%d",&n); 9 j=n; 10 while(j!=0) //取位 11 { 12 j/=10; 13 k++; 14 } 15 if(k<=5) 16 flws(n,k); 17

输入一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

package com.hanqi; import java.util.*; public class Nixudayin { public static void main(String[] args) { // TODO 自动生成的方法存根 System.out.println("输入一个不多于5位的正整数"); Scanner shu=new Scanner(System.in); String a=shu.next(); System.out.println("输入的

输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。

题目描述 输入描述: 输入一个int型整数 输出描述: 按照从右向左的阅读顺序,返回一个不含重复数字的新的整数 输入例子: 9876673 import java.util.Scanner; public class Main {     public static void main(String[] args) {         @SuppressWarnings("resource")         Scanner scanner=new Scanner(System.in)

返回一个整数数组中最大子数组的和。(二人结对编程)

 题目:返回一个整数数组中最大子数组的和. 要求: 1.要求程序必须能处理1000 个元素: 2.每个元素是int32 类型的,出现子数组之和大于整型表示的最大范围会出现什么情况: 3.输入一个整型数组,数组里有正数也有负数. 4.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 5.求所有子数组的和的最大值.要求时间复杂度为O(n).  设计思想:(1)将数组大小定义为n,用户输入p的值以确定该数组的长度,对于这n个元素用随机函数进行生成,每个元素定义为int32类型.(2)为

返回一个二维整数数组中最大联通子数组的和6

1 问题:返回一个二维整数数组中最大联通子数组的和 2 思路:对n*m的二维数组进行分解,分解为n个一维数组,再先求这n个一维数组的最大子数组和,并记下每行最大一维子数组的下标如2-5,这是就会分两种情况第一种是行之间的最大子数组是相连的,如第一行是2-5,第二行是3-6,这是直接相加就行.第二种是不相连的如第一行是2-5,第二行是6-7,这时候就把每行的最大子数组看成一个整体,再使每个最大数组块进行相连,求使其相连的最小代价.最后就可求出最大联通子数组的和. 3 代码 #include<ios