小崔学函数
时间: 1ms 内存:128M
描述:
函数是一个特殊的映射,即数集到数集的映射,对于给定的每个自变量都能给定一个确定的值。函数有很多分类,比如线性函数,非线性函数,随机函数,还有一些具有特殊性质的函数等等。小崔觉得函数很神奇,最近致力于学习函数,简单的函数已经不能难住他了,他接下来,要学习分段函数。他刚做到一个分段函数,到现在还没做出来,你能帮帮他吗?
这个分段函数长这样:
F(x)=|x|! -20<=x<0
=√(666888) x=0
=1!+2!+...+x! 0<x<=10
=√(1!+2!+...+x!) 10<x<=20
(√代表根号,-20<=x<=20,x为整数)
要求:多组输入输出
输入:
整数
输出:
浮点数,保留三位小数
示例输入:
-5
0
6
12
示例输出:
120.000
816.632
873.000
22868.238
提示:
参考答案(内存最优[1132]):
#include<stdio.h>
#include<math.h>
int main()
{
int x;
double y,p=1;
int i;
while(~scanf("%d",&x)){
if( -20<=x && x<0 ){
x=-x;
y=1;
for( i=1; i<=x; i++){
y*=i;
}
}
else if( x==0 ){
y=sqrt( 666888 );
}
else if( x>0 && x<=10 ){
y=0;
p=1;
for( i=1; i<=x; i++){
p*=i;
y+=p;
}
}
else{
y=0;
p=1;
for( i=1; i<=x; i++){
p*=i;
y+=p;
}
y=sqrt( y );
}
printf("%.3f\n",y);
}
return 0;
}
参考答案(时间最优[1]):
#include<bits/stdc++.h>
#include<stdio.h>
using namespace std;
int main()
{
int x;
double f,k,t,s;
int i,j,m;
while(~scanf("%d",&x))
{
if(x<0)
{
k=1;
for(i=1;i<=abs(x);i++)
{
k=k*i;
}
f=k;
}
else if(x==0)
{
f=sqrt(666888);
}
else if(x>0&&x<=10)
{
t=1,s=0;
for(int m=1;m<=x;m++)
{
t*=m;
s+=t;
}
f=s;
}
else
{
s=0,t=1;
for(int j=1;j<=x;j++)
{
t*=j;
s+=t;
}
f=sqrt(s);
}
printf("%.3f\n",f);
}
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。