蓝桥杯简单模板

目录

最大公约数

两个数的最大公约数

多个数的最大公约数

最小公倍数

两个数的最小公倍数

多个数的最小公倍数

素数

​编辑

位数分离

正写

​编辑

反写

闰年


最大公约数

两个数的最大公约数

之前看见的是辗转相除法,例如现在让算一个49,21的最大公约数

cpp 复制代码
#include<iostream>
using namespace std;
int main()
{
	int a=49,b=21;
	while(b!=0)
	{
		int tmp=b;
		b=a%b;
		a=tmp;
	}
	cout<<a;
	return 0;
 } 

模拟一下过程

刚开始a=49,b=21,循环判断b不等于0,进入循环,tmp=21,b=a%b=49%21=7,a=tmp=21;

现在a=21,b=7,循环判断b不等于0,进入循环,tmp=7,b=a%b=21%7=0,a=tmp=7;

现在a=7,b=0,循环判断b不等于0,循环结束;

打印a=7;

加上过程的打印:

cpp 复制代码
#include<iostream>
using namespace std;
int main()
{
	int a=49,b=21;
	cout<<"a="<<a<<",b="<<b<<endl;
	while(b!=0)
	{
		int tmp=b;
		b=a%b;
		a=tmp;
		cout<<"a="<<a<<",b="<<b<<endl;
	}
	cout<<endl<<a;
	return 0;
 } 

运行结果如下图:

多个数的最大公约数

可以先把前两个数的最大公约数求出来之后,在依次和剩下的数进行辗转相除,求出一组数的最大公约数

cpp 复制代码
#include<iostream>
using namespace std;
int gcd(int a,int b);
int gcd(int a,int b)
{
	while(b!=0)
	{
		int tmp=b;
		b=a%b;
		a=tmp;
	}
	return a; 
}
int main()
{
	int arr[4]={5,75,80,2000};
	int num=arr[0];
	for(int i=1;i<4;i++)
	{
		num=gcd(num,arr[i]);
	}
	cout<<num;
	return 0;
 } 

最小公倍数

两个数的最小公倍数

最小公倍数数的求法,一般是将两个数相乘,然后除两个数的最大公约数,下面是具体代码:

cpp 复制代码
#include<iostream>
using namespace std;
int gcd(int a,int b)
{
	while(b!=0)
	{
		int tmp=b;
		b=a%b;
		a=tmp;
	}
	return a; 
}
 int main()
 {
 	int a=21,b=7;
 	cout<<a*b/gcd(a,b)<<endl;
 	return 0;
 }

多个数的最小公倍数

也是同求多个数的最大公约数一样,先求出前两个的最小公倍数,然后依次于剩下的数求出整个数组的最小公倍数。代码如下:

cpp 复制代码
#include<iostream>
using namespace std;
int gcd(int a,int b);
int gcd(int a,int b)
{
	while(b!=0)
	{
		int tmp=b;
		b=a%b;
		a=tmp;
	}
	return a; 
}
int main()
{
	int arr[4]={50,100,10,20};
	int num=arr[0];
	for(int i=1;i<4;i++)
	{
		num=num*arr[i]/gcd(num,arr[i]);
	}
	cout<<num;
	return 0;
 } 

素数

因数只有1和他本身的数

cpp 复制代码
 #include<iostream>
 using namespace std;
 bool isprime(int n)
 {
 	for(int i=2;i*i<n;i++)
 	{
 		if(n%i==0)return false;
	}
	 return true;
 }
 int main()
 {
 	for(int i=2;i<100;i++)
 	{
 		if(isprime(i))printf("%d\t",i);
	}
	return 0;
 }

结果如下

位数分离

有时候会给一些数,然后让分离每个位数的数字,有时候是正写,有时候是反写

正写

正写老师教过递归的写法,但是有些不熟练,我这里的方法是先统计这个数是几位数,然后依次除。

cpp 复制代码
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
	int a=12345678;
	int num=a;//用来统计位数
	int t=0;
	while(num) 
	{
		num/=10;
		t++;
	}
	while(t)
	{
		t--;
		int i=a/pow(10,t);
		a=a-i*pow(10,t);
		cout<<i<<' ';
		
	}
	 return 0;
	
} 

结果如下

反写

根据模的特点

cpp 复制代码
 #include<iostream>
 using namespace std;
 int main()
 {
 	int a=12345678;
 	while(a)
 	{
 		cout<<a%10<<' ';
		 a/=10;  
	}
	return 0;
 }

结果如下

闰年

不是百年的时候,每四年一闰,

是百年的时候,四百年一闰

cpp 复制代码
#include<iostream>
using namespace std;
bool leap(int year)
{
	if(year%400==0||year%100!=0&&year%4==0)return true;
	return false;
	
}
int main()
{
	for(int i=1;i<1000;i++)
	{
		if(leap(i))printf("%d\t",i);
	}
	return 0;
}

结果

相关推荐
江畔柳前堤4 小时前
大语言模型分布式训练:从并行策略到万卡工程的系统梳理
人工智能·分布式·深度学习·算法·目标检测·机器学习·语言模型
Forever Nore5 小时前
LeetCode 4 寻找两个正序数组的中位数 - 二分
算法·leetcode
罗西的思考7 小时前
【OpenClaw具身硬件】MiniClaw 阅读笔记---(1)基础
人工智能·算法·机器学习
蛋先生DX7 小时前
大模型参数存储格式揭秘:BF不是男朋友
深度学习·算法·llm
爱跳舞的烤冷面8 小时前
自学嵌入式第22天(数据结构——哈希)
数据结构·算法·哈希算法
猎嘤一号8 小时前
博弈论(Game Theory)的理论、算法与工程
人工智能·算法·安全·博弈论
月光船幽幽8 小时前
影子模式下保护 logits 不被修改
人工智能·python·算法
马拉AI8 小时前
腾讯开源 Agent 记忆系统,AI“换对话就忘”的问题有了新解法(附安装使用教程)
人工智能·算法·开源·科研
地平线开发者10 小时前
征程6工具链模型X86推理方式说明
算法
地平线开发者10 小时前
【征程6】校准量化中HistogramObserver解析
算法