求一个整数的位数,这个数在1,200,000,000之间,并将这个整数的各位上的数字相乘,直到最后是一位数为止。比如输入99,他的整个序列应该是99,81,8,他的persistence是2.
我用随机数获得该整数,可是当执行“将这个整数的各位上的数字相乘”时总是会有溢出,谁能给个代码,谢谢
!
我用随机数获得该整数,可是当执行“将这个整数的各位上的数字相乘”时总是会有溢出,谁能给个代码,谢谢
!
解决方案 »
- 怎样通过socket发送带包标记的数据包!
- Ibatis 的 delete 问题!!!
- 用JAVA做的一个发邮件的例子,但是一直报错..
- struts中的tiles模板
- The server encountered an unexpected condition which prevented it from fulfilling the request
- hibernate的多对多问题
- 请问下CCFinder FindBugs这两款是什么工具啊?
- 关于webwork中action的返回问题,请大家帮我看一下
- 一个关于jdbc连接sqlServer的很初级的问题,请大家帮帮忙把!
- 我装了jbuilder5后,为什么新建文件的Enterprise中的EJB,javabean不能用,我怎么使它能用啊?
- 下拉列表框
- axis一个很低级的错误
public static void main(String[] args) {
Random rand = new Random();
int num = rand.nextInt(200000000);
System.out.println(num);
while(true){
num = result(num);
if(num < 10){
System.out.println(num);
break;
}
}
}
public static int result(int num){
int len = String.valueOf(num).length();
int result = 1;
for(int i = len ; i > 0 ; i --){
result = result * (num/len(i));
num = num%len(i);
}
return result;
}
public static int len(int len){
int result =1;
for(int i = 1 ; i < len ;i ++){
result = result * 10;
}
return result;
}
}数字过大的时候 总是会出现零 数字大的时候好像怎么乘都有个零在里面
public class Digit {
public static void main(String[] args) {
int input = 11336377;
System.out.println("这个数的长度为:"+getLength(input));
printMembers(input);
}
public static int getLength(int input){
return (input+"").length();
}
public static void printMembers(int input){
if(getLength(input)>1){
int temp = 1;
int length = getLength(input);
for(int i= length-1;i>=0;i--){
temp = temp*((int)(input/Math.pow(10, i)));
input = (int)(input%Math.pow(10, i));
}
System.out.print(temp+" ");
printMembers(temp);
}
}}
public static void main(String[] args) {
int input = 123467;
System.out.println(getLength(input+""));
System.out.println("number result is " + getNumber(input+""));
}
public static int getLength(String input){
return null == input ? 0 : input.length();
}
public static int getNumber(String input){
String inputTemp = input;
int result[] = null ;
if(!inputTemp.contains("0")){
result = digui(char2int(input));
}
return result[0];
}
public static int[] char2int(String str){
int inputInt[] = new int[str.length()] ;
int i = 0 ;
for(char c : str.toCharArray()){
inputInt[i] = Integer.parseInt(c+"");
i ++ ;
}
return inputInt;
}
public static int[] digui(int[] input){
int [] inputInt = input;
int result = 1 ;
if(inputInt.length > 1){
for (int i : inputInt) {
result *= i;
}
inputInt = digui(char2int(result+""));
}
return inputInt;
}
}
应该差不多了,自己再补充点吧,比如判断里边有“5”,并且有偶数 ,最后相乘的值就直接为0.