算法题1 大数字运算(输出时不显示前面多余的0)

//直接上代码:先别着急算阶乘,先进行大数的计算

//列如  3784*23,利用数组进行计算。 new int[6],放入03784,分别乘以23
| 0| 3 |7 |8 |4|
           *23
|0 | 69| 161|184| 92|
//去留
| 8 | 7 | 0 | 3 | 2 |
//最后为87032
//上代码:
int x=3784;
int n=23;
int[] ints = new int[5];
ints[ints.length-1]=4;
ints[ints.length-2]=8;
ints[ints.length-3]=7;
ints[ints.length-4]=3;
for( int i=0;i<ints.length;i++){
    ints[i]=ints[i]*n;
}
//此处从后面进行移位操作,不可以从前面。
for(int i=length-1;i>0;i--){
   int[i-1]+=int[i]/10;
   int[i]=int[i]%10;
}
//之后循环遍历ints便可得到结果。

///一次类推,进行阶乘的计算。
public class T1 {

	
	public static void main(String[] args) {
		
		
		//计算50!
		
		int n = 50;
		int length=100;
		getFactorial(50,100);
	}
	
	static String getFactorial(int n,int length) {
		String result="";
		int[] ints = new int[length];
		ints[ints.length-1]=1;
		for (int i = 1; i <= n; i++) {
	                ints=demo(ints,i);		
		}
		int j = 0 ;
		Boolean flag=false;
		for (int i = 0; i < ints.length; i++) {
			if(ints[i]>0||flag) {
				j=i;
				flag=true;
				System.out.print(ints[i]);
			}
		}
		
		return null;
		
	}
	
	static  int[] demo( int[] ints  , int num) {
		for (int i = 0; i < ints.length; i++) {
			ints[i]*=num;
		}
		for (int i = ints.length-1;i>0;i--) {
			ints[i-1]+=ints[i]/10;
			ints[i]=ints[i]%10;
		}
		return ints;
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

活得真实

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值