SDUT 2557分段函数Java实现

Problem Description

函数是一种特殊的映射,即数集到数集的映射。对于给定的每个自变量都能给出一个确定的值,这是一件多么牛的事情呀。其实不是函数牛,而是因为它具有这种性质我们的数学家才这么定义了它。函数有很多类型,虽然本质都是映射,但为了方便研究和应用,数学家们做了很多分类。比如线性函数,非线性函数,随机函数,还有一些具有特殊性质的函数等等。

今天我们要关注的是分段函数,所谓分段就是对于整个定义域来说,函数的值域是不连续的。很明显的一个就是绝对值函数,类似于y=|x|,(x,y属于R)。不连续是按照自变量的连续变化函数值的变化不连续而已,但函数仍然不离不弃的给了每个自变量一个值。

总之,函数就是按照规则对自变量进行操作得到相应的值。而程序里的函数就更牛了,它可以对我们的输入(自变量)进行各种我们想做的操作,最后得到输出(值),很好玩吧。

今天,就希望你能用程序里的函数实现数学里的分段函数,加油哦。

这个分段函数长得是这个样子的:

F(x) = log2(x)    0<x<10
       = |x|+sin(x) x<0
       =0             x=0
       =x^2          x>=10 

Input

输入包含多组。
第一行给出数据的组数T。
接下来T行每行一个实数X。

Output

输出T行,每行一个函数值,四舍五入保留到小数点后两位。
希望你能根据函数的表达式,对于给定的每个自变量不离不弃的计算出它的值。

Sample Input

4
0
10
5
-1
Sample Output
0.00
100.00
2.32
0.16

难实现的地方还是在第一步,要注意的是在Java中  log2N,首先要弄明白一个初中学到的公式log2N=logeN/loge2,logeN代表以e为底的N的对数,loge2代表以e为底的2的对数.
   在java.lang.math类中的log(double a)代表以e为底的a的对数,因此log2N在Java中的表示为:
    log((double)N)/log((double)2),知道这个就容易了。

import java.util.*;
public class Main{
   public static double HS(double n){
	   if(n==0)
		   return 0;
	   else if(n>=10)
		   return n*n;
	   else if(n<0)
		   return -1*n+Math.sin(n);
	   else
		   return Math.log(n)/Math.log((double)2);
	   
   }
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
             double n;
             int t;
             while(cin.hasNext()) {
            	 t=cin.nextInt();
            	 for(int i=0;i<t;i++) {
            	 n=cin.nextDouble();
            	 System.out.printf("%.2f\n",HS(n));}
             }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值