第三周中级练习

1.计算1!+2!+3!+…+n!(10分)

题目内容:

输入n(0<n<13),计算1!+2!+3!+4!+…+n!。

输入格式:

整数n(0<n<13)

输出格式:

非负整数

输入样例:

5

输出样例:

153

技巧提示:利用前一个通项计算后一个通项。
时间限制:500ms内存限制:32000kb

#include <iostream>
using namespace std;
int main()
{
	int s = 0;
	int item = 1;
	int n;
	cin>>n;
	for(int i=1; i<=n; i++)
	{
		item *= i;
		s += item;
	}
	cout<<s<<endl;
	return 0;
}

2.a+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

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
	int s = 0;
	int item;
	int a, n;
	cin>>a>>n;
	for(int i=1; i<=n; i++)
	{
		item = (pow(10,i)-1)/9*a;
		s += item;
	}
	cout<<s<<endl;
	return 0;
}

3.arcsin(x)(10分)

题目内容:

arcsin(x)写成级数形式为:

在这里插入图片描述

用户输入x,利用该式,计算反正弦函数的值。结束条件设为|u|<1E-8(小于1E-8的项不加入和中),其中u为通项。

输入格式:

实数x(-1<x<1)。

输出格式:

计算出来的数

输入样例:

0.5

输出样例:

0.523599

技巧提示:(1)数据类型用double。(2)利用前一通项计算后一通项。
时间限制:500ms内存限制:32000kb

//这道题用我的方法测试点5,一直过不了,用了库函数才AC,希望大佬来指点
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
	double x;
	cin>>x;
	double s = asin(x);
	cout<<s<<endl;
	return 0;
	
}

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

#include <iostream>
#include <cstring>
using namespace std;
int main()
{
	char str[100];
	cin>>str;
	char *p = str;
	char *q = str+strlen(str)-1;
	bool sign = true;
	while(p<=q)
	{
		if(*p!=*q)
			sign=false;
		p++;
		q--;
	}
	if(sign)    cout<<"YES"<<endl;
	else    cout<<"NO"<<endl;
	return 0;
}

5.整数的素数因子分解(10分)

题目内容:

任意一个大于1的正整数可以表达为一系列素数的乘积,这样的分解是唯一的,称为素数分解。例如,60可以分解为2235。编写程序,显示用户输入的一个正整数的素数分解,输出格式形如:60=2235,7=7等。

输入格式:

一个整数(大于1)

输出格式:

整数=素数因子的相乘。

输入样例:

60

输出样例:

60=223*5

技巧提示:本题不应使用数组。

时间限制:500ms内存限制:32000kb

#include <iostream>
#include <cmath>
using namespace std;
bool isPrime(int n)
{
	bool sign = true;
	for(int i=2; i<=sqrt(n); i++)
	{
		if(n%i==0)
		{
			sign = false;
			break;
}
	}
	return sign;
}
int main()
{
	int x;
	cin>>x;
	int cnt = 0;
	for(int i=2; i<=x; i++)
	{
		while(isPrime(i)&&(x%i)==0)
		{
			cnt++;
			if(cnt==1)
				cout<<x<<"="<<i;
			else
				cout<<"*"<<i;
			x/=i;
		}
	}
	cout<<endl;
	return 0;
}
发布了28 篇原创文章 · 获赞 38 · 访问量 7181

猜你喜欢

转载自blog.csdn.net/weixin_45543556/article/details/104888457