public static void factor(int m) { int[] A = {1}; for(int i = 1; i < m; i++) { A = helper(A, i+1); } for(int i = A.length - 1; i >= 0; i--) { System.out.print(A[i]); } } public static int[] helper(int[] s, int a)//计算一个数组s乘以m的值,比如120 * 6的值,s为[0, 2, 1],m为6 { int i,temp = 0; int[] arr = new int[(s[s.length - 1] * a + "").length() - 1 + s.length];//本次计算的结果长度 for(i = 0; i < s.length; i++) { arr[i] = (s[i] * a + temp) % 10;//加上前一次的十进位数 if(s[i] * a + temp >= 10) temp = (s[i] * a + temp) / 10; else temp = 0; } if(temp != 0)//计算出最高位的数超出一位,要进行增加位数 { for(int j = 0; j < arr.length - s.length; j++)//本次计算数比前次多的位数 { arr[i+j]=temp % 10;//把多出的其中一位数存放在新数组中,最后返回至result[]中,i代表目前数组的最高数 if(temp >= 10) temp /= 10;//放在本循环的j++循环止中进行 else temp = 0; } } return arr; }
习惯受伤
qq_浮梦壹生_03287462
qq_浮梦壹生_03287462
算法困难户
青春无极限7
相关分类