使用数组实现乘法
来源:互联网 发布:大帮手计件工资软件 编辑:程序博客网 时间:2024/06/06 04:43
问题描述
输入一个正整数n,输出n!的值。
其中n!=1*2*3*…*n。
算法描述
n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推。
将a乘以一个整数k变为将数组A的每一个元素都乘以k,请注意处理相应的进位。
首先将a设为1,然后乘2,乘3,当乘到n时,即得到了n!的值。
import java.util.ArrayList;import java.util.Arrays;import java.util.Iterator;import java.util.List;import java.util.Scanner;public class Main {public static void main(String[] args) { // TODO 自动生成的构造函数存根 Scanner sc = new Scanner(System.in); // 输入的N int n = sc.nextInt(); int[] arr = new int[] { 1 }; for (int i = 0; i < n; i++) { arr = mult(arr, i + 1); } for (int i = 0; i < arr.length; i++) { System.out.print(arr[arr.length - i - 1]); }}// 实现数组和整数乘法的方法public static int[] mult(int[] s, int m) { // 得到的数组的长度 int[] arr = new int[s.length + (s[s.length - 1] * m + "").length() - 1]; // 乘法 for (int i = 0; i < s.length; i++) { int temp = s[i] * m; arr[i]=temp; } //进位计算 for (int i = 0; i < arr.length-1; i++) {//注意数组越界 if (arr[i] > 9) { int temp = arr[i]; arr[i] = temp % 10; arr[i + 1]+= temp / 10; } } return arr;}
}
0 0
- 使用数组实现乘法
- 大整数乘法-数组实现
- 使用数组打印乘法口诀
- 用数组实现多项式加法和乘法
- 大数乘法——数组实现
- java 中二维数组 实现乘法口诀
- MPI实现矩阵乘法程序--实现MPI传递连续数组
- 使用python实现Strassen矩阵乘法算法
- 使用cuFFT实现大整数乘法
- 递归+优化 一维数组实现矩阵乘法
- 用C语言实现动态数组的大整数乘法
- 利用可变列数组实现乘法口诀打印。
- 只使用++运算实现加法,减法,乘法,除法PHP实现
- 数组元素乘法结果
- MATLAB数组乘法
- 使用数组实现队列
- 使用数组实现队列
- 使用数组实现栈
- 关于jquery中html()、text()、val()的区别
- 真的需要改变吗
- 优化算法之引力搜索算法
- Unity3D 摄像机cullingMask操作
- SQL CLR函數(以正則表達式為例)
- 使用数组实现乘法
- Java 设计模式
- bat批处理编程实例(1)
- js获取数组前n项的和
- CS231n Assignment1--Q4
- 关于函数实参传递结构体变量的思考
- linux(ubuntu)下获取 ms 毫秒级别 时间
- 迷宫求解C/C++
- 迭代工具(一)——按图幅框号批量裁剪影像