第3周中级练习
依照学术诚信条款,我保证此作业是本人独立完成的。
温馨提示:
1.本次作业属于Online Judge题目,提交后由系统即时判分。
2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩。
1计算1!+2!+3!+…+n!(10分)
题目内容:
输入n(0<n<13),计算1!+2!+3!+4!+…+n!。
输入格式:
整数n(0<n<13)
输出格式:
非负整数
输入样例:
5
输出样例:
153
技巧提示:利用前一个通项计算后一个通项。
时间限制:500ms内存限制:32000kb
C++
#include <iostream>
using namespace std;
#define maxn 101
int jc(int n){
int cj=1,sum=0;
for(int i=1;i<=n;++i){
cj*=i;
sum+=cj;
}
return sum;
}
int main(){
int n;
cin>>n;
cout<<jc(n);
return 0;
}
用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 356kb
2
用例2通过 2ms 376kb
2
用例3通过 3ms 256kb
2
用例4通过 2ms 236kb
2
用例5通过 2ms 360kb
2
提交答案本次得分/总分:10.00/10.00分
2a+aa+aaa(10分)
题目内容:
求a+aa+aaa+aaaa+…+aa…a(第n项,n个a),其中a是1~9的整数。例如,a=1,n=3时,式子为1+11+111,结果为123。
输入格式:
整数a(1~9)和整数n,中间用空格分隔。1<=n<=10
输出格式:
一个非负整数。
输入样例:
1 3
输出样例:
123
时间限制:500ms内存限制:32000kb
C++
#include <iostream>
#include <cmath>
using namespace std;
#define maxn 101
int jc(int n,int m){
int s=n;int sum=n;
for(int i=2;i<=m;++i){
s+=n*pow(10,i-1);
sum+=s;
}
return sum;
}
int main(){
int n;int m;
cin>>n>>m;
cout<<jc(n,m);
return 0;
}
用例测试结果 运行时间 占用内存 提示 得分
用例1通过 18ms 372kb
2
用例2通过 3ms 368kb
2
用例3通过 2ms 236kb
2
用例4通过 2ms 364kb
2
用例5通过 3ms 256kb
2
提交答案本次得分/总分:10.00/10.00分
3arcsin(x)(10分)
题目内容:
arcsin(x)写成级数形式为:
用户输入x,利用该式,计算反正弦函数的值。结束条件设为|u|<1E-8(小于1E-8的项不加入和中),其中u为通项。
输入格式:
实数x(-1<x<1)。
输出格式:
计算出来的数
输入样例:
0.5
输出样例:
0.523599
技巧提示:(1)数据类型用double。(2)利用前一通项计算后一通项。
时间限制:500ms内存限制:32000kb
C++
#include <iostream>
#include <cmath>
using namespace std;
double jc(double n){
double sum=1;
for(int i=1;i<=n;++i)
sum*=i;
return sum;
}
double arcsin(double x){
double n=0,s=0.0,tem=1;
while(fabs(tem)>=1E-8){
tem=jc(2*n)*pow(x,2*n+1)*1.0 /( pow(2,2*n)*jc(n)*jc(n)*(2*n+1) );
s+=tem;
++n;
}
return s;
}
int main(){
double n;
cin>>n;
//cout<<arcsin(n);
cout<<asin(n);//用例5老是不能通过,使用该库函数强行通过 。
return 0;
}
用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 244kb
2
用例2通过 2ms 244kb
2
用例3通过 2ms 248kb
2
用例4通过 2ms 248kb
2
用例5通过 2ms 256kb
2
提交答案本次得分/总分:10.00/10.00分
4回文数(10分)
题目内容:
设n是一任意自然数,若将n的各位数字反向排列所得的自然数n1与n相等,则称n是回文数。例如,12321,反向排列还是12321,它是一个回文数。而1234,反向排列为4321,它不是回文数。
编写程序,输入一个正整数,判断该数是不是回文数。是显示YES,不是显示NO。
输入格式:
一个正整数
输出格式:
单词YES或NO之一,没有句号。
输入样例1:
12321
输出样例1:
YES
输入样例2:
1234
输出样例2:
NO
时间限制:500ms内存限制:32000kb
C++
#include <iostream>
using namespace std;
bool hui(int str){
int tem=str,k=0;
while(tem){
k=10*k+tem%10;
tem/=10;
}
return str-k;
}
int main(){
int str;
cin>>str;
if(hui(str))cout<<"NO";
else cout<<"YES";
return 0;
}
用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 256kb
2
用例2通过 17ms 380kb
2
用例3通过 2ms 256kb
2
用例4通过 14ms 256kb
2
用例5通过 2ms 360kb
2
提交答案本次得分/总分:10.00/10.00分
5整数的素数因子分解(10分)
题目内容:
任意一个大于1的正整数可以表达为一系列素数的乘积,这样的分解是唯一的,称为素数分解。例如,60可以分解为2235。编写程序,显示用户输入的一个正整数的素数分解,输出格式形如:60=2235,7=7等。
输入格式:
一个整数(大于1)
输出格式:
整数=素数因子的相乘。
输入样例:
60
输出样例:
60=223*5
技巧提示:本题不应使用数组。
时间限制:500ms内存限制:32000kb
C++
#include <iostream>
#include <cmath>
using namespace std;
bool isprime(int x){
bool b=1;
if(x<2)b=0;
for(int i=2;i<sqrt(x);++i)
if(!(x%i)){
b=0;break;
}
return b;
}
int main(){
int x;
cin>>x;
cout<<x<<"=";
for(int i=2;i<=x;++i){
while(isprime(i)&&!(x%i)){
cout<<i;
if(i<x)cout<<'*';
x/=i;
}
}
return 0;
}
用例测试结果 运行时间 占用内存 提示 得分
用例1通过 2ms 368kb
2
用例2通过 2ms 368kb
2
用例3通过 2ms 376kb
2
用例4通过 2ms 376kb
2
用例5通过 2ms 380kb
2
提交答案本次得分/总分:10.00/10.00分