1514:数值的整数次方 @jobdu

 

题目1514:数值的整数次方

时间限制:1 秒

内存限制:128 兆

特殊判题:

提交:377

解决:103

题目描述:

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

 

输入:

输入可能包含多个测试样例。
对于每个输入文件,第一行输入一个整数T,表示测试案例的数目,接下来的T行每行输入一个浮点数base和一个整数exponent,两个数中间用一个空格隔开。

 

输出:

对应每个测试案例,
输出一个浮点数代表答案,保留两位小数即可。

 

样例输入:
5
1.0 10
0.0 -5
1.0 0
1.2 5
2.0 -1
样例输出:
1.00e+00f
INF
1.00e+00f
2.49e+00f
5.00e-01f
提示:

 请特别注意不同的编译器对于科学计数法格式输出中指数位数的差别。建议使用九度Online Judge所使用的编译环境。

 

 


最后一组数据不知道为什么无法通过,翻看了一下记录,发现用Java做的没有一个AC,于是就不浪费时间纠结了。

C++版本的可参考这两个:算法都是一样的

http://blog.csdn.net/SunnyYoona/article/details/14646053

http://blog.csdn.net/arcsinsin/article/details/12917119


 

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;


public class S11 {

	public static void main(String[] args) throws FileNotFoundException {
		BufferedInputStream in = new BufferedInputStream(new FileInputStream("in.in"));
		System.setIn(in);
		Scanner cin = new Scanner(System.in);
		
		while (cin.hasNextInt()) {
			long n = cin.nextInt();
			for(int i=0; i<n; i++){
				double ret = power(cin.nextDouble(), cin.nextInt());
				if(ret != Double.POSITIVE_INFINITY){
					System.out.println(String.format("%.2ef", ret));
				}else{
					System.out.println("INF");
				}
			}
		}
	}
	
	public static double power(double base, int n){
		if(n == 0){
			return 1;
		}
		if(n == 1){
			return base;
		}
		if(n < 1){
			return 1.0/power(base, -n);
		}
		if((n & 1) == 1){		// odd
			double tmp = power(base, (n-1)>>1);
			return tmp * tmp * base;
		}else{
			double tmp = power(base, n>>1);
			return tmp * tmp;
		}
	}
}


 

 

posted on 2013-12-17 16:09  我的小人生  阅读(175)  评论(0编辑  收藏  举报