栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++编程题目练习2(蓝桥杯)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++编程题目练习2(蓝桥杯)

1、比较约数

题目描述

调用以下函数完成题目:

约数个数函数factor_cnt: 只有一个int型参数, 返回参数的正约数个数.

约数和函数factor_sum: 只有一个int型参数, 返回参数的所有正约数之和.

给出两个正整数a和b, 比较两个数正约数个数的大小, 输出约数个数较多的那个数. 如果约数个数相等, 就再比较约数和, 输出约数和较大的那个数. 如果约数和也相等, 就输出数值较大的数.

注: 即使两个不相等, 它们的约数个数和约数和也可能分别相等. 例如14和15, 都有4个约数, 约数和都是24.


输入格式

1行, 两个正整数a和b, 以空格分隔

输出格式

1行, 按照题目要求, 输出比较结果


输入样例#1

输入#1

5040 1001

输出样例#1

输出#1

5040

输入样例#2

输入#2

14 15

输出样例#2

输出#2

15

说明/提示

1≤a,b≤10^8

a不等于b

代码:
#include
using namespace std;
//约数个数函数factor_cnt(x): 返回x的正约数个数.
int factor_cnt(int x){
	int cnt = 0;
	for(int i = 1; i * i <= x; ++i){
		if(x % i == 0){
			if(i * i == x) cnt += 1;
			else cnt += 2;
		}
	}
	return cnt;
}
//约数和函数factor_sum(x): 返回x的约数和.
int factor_sum(int x){
	int cnt = 0;
	for(int i = 1; i * i <= x; ++i){
		if(x % i == 0){
			if(i * i == x) cnt += i;
			else cnt += i + x / i;
		}
	}
	return cnt;
}


int main(){
    int a,b;
    scanf("%d%d", &a,&b);
    if(factor_cnt(a) > factor_cnt(b)) printf("%d",a);
    if(factor_cnt(b) > factor_cnt(a)) printf("%d",b);
//    if(factor_cnt(a) = factor_cnt(b)) 
	if(factor_cnt(a) == factor_cnt(b))
    {
    
    	if(factor_sum(a) > factor_sum(b)) printf("%d",a);
    	if(factor_sum(b) > factor_sum(a)) printf("%d",b);
//    	if(factor_sum(a) = factor_sum(b))
		if(factor_sum(a) == factor_sum(b))
    	{
    	
    		if(a>b) printf("%d",a);
    		if(a 
 2、三个数的gcd和lcm 
输出三个数的最大公约数,最小公倍数,两者乘积,三数乘积 
题目描述 

调用以下函数完成题目:

最大公约数gcd: 有两个int型参数, 返回两个参数的最大公约数.

最小公倍数lcm: 有两个int型参数, 返回两个参数的最小公倍数.

给出三个正整数a,b和c, 依次输出三个数的最大公约数(a,b,c)、最小公倍数[a,b,c]、最大公约数(a,b,c)与最小公倍数[a,b,c]的乘积、三个数的乘积abc.

注: 三个数的最大公约数等于前两个数的最大公约数与第三个数的最大公约数, 最小公倍数同理.


输入格式

1行, 三个正整数a,b和c, 以空格分隔

输出格式

1行, 按顺序输出依次输出三个数的最大公约数(a,b,c)、最小公倍数[a,b,c]、最大公约数(a,b,c)与最小公倍数[a,b,c]的乘积、三个数的乘积abc. 用空格分隔.


输入样例#1

输入#1

6 10 15

输出样例#1

输出#1

1 30 30 900

说明/提示:1≤a,b≤1000

#include
using namespace std;
//最大公约数gcd(a,b): 返回a和b的最大公约数.
int gcd(int a, int b){
	while(b != 0){
		int t = b;
		b = a % b;
		a = t;
	}
	return a;
}
//最小公倍数lcm(a,b): 返回a和b的最小公倍数.
int lcm(int a, int b){return a / gcd(a, b) * b;}

int main(){
	int a,b,c;
	scanf("%d%d%d", &a, &b, &c);
	int g=gcd(gcd(a,b),c), l=lcm(lcm(a,b),c);
	int m=g*l, n=a*b*c;
	printf("%d ",g);
	printf("%d ",l);
	printf("%d ",m);
	printf("%d ",n);
	
	
    return 0;
}
3、判断质数 题目描述

定义一个名为 isPrime 的函数,它有 1 个int 类型参数,返回 bool 类型的值,功能是判断这个参数是不是质数。如果参数是质数则返回 true,否则返回 false。

程序输入一个n,若是质数输出"YES";若不是质数则输出"NO"。

利用函数isPrime完成判断质数的任务

【输入格式】

1 行,一个正整数 nn。

【输出格式】

1 行,对应的输出。

【输入输出样例#1】

输入#1

2

输出#1

YES

【输入输出样例#2】

输入#2

66

输出#2

NO

【数据范围】1≤n≤10^9

#include
using namespace std;

//在此定义函数
//int isPrime(int i)
bool isPrime(int m)
{
	if(m<2) return false;
//	for(int i=2;m 
 4、盖大楼 
【题目描述】 

我们需要盖一个大楼, 最高层有1个房间,次高层有2个房间,以此类推。

至少共有m个房间, 由于你很吝啬, 所以一旦满足要求就不再盖了。

你需要知道至少要盖多少层。

例如m=9时,需要盖4层。如果用'R'表示房间,示意图如下:

R

RR

RRR

RRRR

输入格式

一个正整数m

输出格式

一个整数n表示需要建造的层数

输入样例#1

输入#1

9

输出样例#1

输出#1

4

说明/提示:1≤m≤10^9

#include 
using namespace std;
int main()
{
	int m ,n,room=0;
	scanf("%d", &m);
	for( n=0;room 
5、数7 
【题目描述】 

小明他特别喜欢7 这个数, 他会观察每个数中有几个数字7(例如7867 中有2 个7). 他从正整数m开始数(依次数m,m+1,m+2,⋯ 直到数过的数中有至少n个7 为止.

输入两个正整数m,n, 输出他数到的最后一个数.


输入格式

一行两个正整数m,n,以空格隔开

输出格式

一个整数,小明数到的最后一个数


输入样例#1

输入#1

77777 1

输出样例#1

输出#1

77777

输入样例#2

输入#2

1 20

输出样例#2

输出#2

97

说明/提示:1≤m,n≤1000000

#include
#include
#include
using namespace std;

int cnt7(int n){
	int num=0;
	while(n>0){
	if(n%10==7) num++;
	n/=10;
	}
	return num;
}
int main(){
	int m,n,ans=0,i;
	scanf("%d %d", &m,&n);
	for(i=m;ans 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/982627.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号