ACM练习之hdoj1042《N!》

问队友曹大神我应该练些什么题,到时候尽量帮他们做一道啊。他说要不我去学下Java好了,有些大数据的题用Java很简单。然后就给了我一些题:

p开头的为Vijos题)

虽然听不懂他说什么,但我我的本能告诉我应该相信队友 - -。而且我觉得Java比算法好玩多了,哈哈。于是先从hdu1042开始了。

拿到题,看懂是阶乘,瞬间想到递归 - -。用c++分分钟解决,想不通为啥他要让我用Java - -。提交,果然Runtime Error (ACCESS_VIOLATION)  了 - -。好吧,研究一下发现int类型不够用,改成long long还是跟题目要求的最大10000的阶乘差远了。。。终于理解什么是大数据了。。。百度一下答案,卧槽,c++写的果然麻烦,刚好看到有用Java写的,看了一下只有一个东西看不懂嘛,竟然只用了一个类就解决了。。好吧,的确强大,马上去学BigIntteger是什么东西。参考文章:http://blog.csdn.net/nitefullwind/article/details/26059681 (有几个很基础又必要的东西)

咳咳,Java的确和c++还是有不同的额,瞎倒腾了几次算是稍稍理解了一些东西,大概能写出来了(好吧,其实我是复制别人的 - -。)

AC代码如下:

import java.util.Scanner;
import java.math.BigInteger;

public class hdoj1042{
	public static void main(String[] args){
		Scanner scanner = new Scanner (System.in); 	//基本输入
		int n;	
		BigInteger m;	//声明BigInteger类型的m
		while(scanner.hasNextBigInteger()){	//还不知道是什么 - -
			n = scanner.nextInt();		//给 n 赋值
			m = BigInteger.ONE;	//初始化 m = 1 ;同理还有BigInteger.TEN(ZERO);效果等同于 BigInteger.valueOf( N ), N = 0,1,2,3,4……
			for(int i = 2 ; i <= n;i++)	//好像BigInteger类型的数据不能用 <= 和 ++ 运算符啊,所以 i 和 n 都是 int 型的
				m = m.multiply(BigInteger.valueOf(i));		// 乘法函数,同理还有 .add( N ) 什么的,参考上文链接内容
			System.out.println(m);		//基本输出
		}
	}
}

别偷懒了,顺便标上自己的理解吧 - - 。

另外,第一次用Java做OJ题,原来每道题的类名都得是 Main 才行,比如此题中  public class hdoj1042 要改成 public class Main

是什么原因估计学过Java的人都知道,我只理解那么一点,就不说了 - -。

2014年5月18日01:51:27

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值