本帖最后由 朦胧色彩 于 2015-9-28 12:15 编辑
用数组来保存结果
- class Test
- {
- public static void main(String[] args)
- {
- //求1000!,就是1*2*3*4*5*....*1000
- int[] arr = new int[1000000];// 存储1000!的结果,我想1000000位足够了吧
- arr[1] = 1;
- int numindex = 1;// 求出来值的是多少位数
- for(int i = 1; i <= 1000; i++)
- {
- for(int j = 1; j <= numindex; j++)
- arr[j] *= i;
-
- // 判断每一位是不是大于等于10,是的话往前就进1
- for(int k = 1; k < numindex; k++)
- if(arr[k] >= 10)
- {
- arr[k+1] += arr[k] / 10;
- arr[k] %= 10;
- }
- // 最高位也不得>=10
- while(arr[numindex] >= 10)
- {
- arr[numindex + 1] += arr[numindex] / 10;
- arr[numindex] %= 10;
- numindex++;
- }
- }
- int counts = 0;
- // 从最高位往后打,判断如果是0就+1
- for (int k = numindex; k >= 1; k--) {
- if(arr[k]==0)
- counts++;
- }
- System.out.println(counts);
- }
- }
复制代码 |