蓝桥杯常用功能函数
文章目录
1.埃氏筛法
输出从 M 到 N 的所有素数
输出第5个到第27个素数
11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103
#include<bits/stdc++.h>
using namespace std;
const int N=1e4*2+10;
bool a[N];//判断是否为素数,false为素数
vector<int> ans;//存所有的素数
void ash(){
for(int i=2;i<N;i++){
if(!a[i]){
ans.push_back(i);
for(int j=i;j<N;j+=i)
a[j]=true;
}
}
}
int main(){
int m,n;
cin>>m>>n;
ash();
for(int i=m-1;i<n;i++){
cout<<ans[i]<<" ";
}
return 0;
}
2.进制转换
将输入的数a,转换成b进制
579 8
1103
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
vector<int> ans;
do{
ans.push_back(a%b);
a/=b;
}while(a);
reverse(ans.begin(),ans.end());
for(int i=0;i<ans.size();i++)
cout<<ans[i];
return 0;
}
3.输入未知长度的数组
#include<bits/stdc++.h>
using namespace std;
int main(){
vector<int> arr;
int num;
while(1) {
cin>>num;
arr.push_back(num);
if(cin.get()=='\n')
break;
}
int len = arr.size();
for(int i=0;i<len;i++){
cout<<arr[i]<<" ";
}
return 0;
}
4.判断素数
int prime(int p){//判断素数
if(p<=0||p==1) return 0;
if(p==2)
return 1;
for(int i=2;i*i<=n;i++){
if((p%i)==0){
return 0;
}
}
return 1;
}
5.输入条件是以 # 结束
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
vector<string> ss;
while(getline(cin,s)&&s!="#"){
ss.push_back(s);
}
for(int i=0;i<ss.size();i++){
cout<<ss[i]<<endl;
}
return 0;
}
/*
kdhak
hdahdka
jkhkh
fsjhf
#
kdhak
hdahdka
jkhkh
fsjhf
*/
6.求最大公约数和最小公倍数
#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b){//最大公约数
if(a<b) swap(a,b);
if(a%b==0) return b;
else return gcd(b,a%b);
}
int lcm(int a,int b){//最小公倍数
return (a*b/gcd(a,b));
}
int main(){
int n,m;
cin>>n>>m;
int large,least;
large=gcd(n,m);
least=lcm(n,m);
cout<<"large="<<large<<","<<"least="<<least;
return 0;
}
7.去掉字符串高位的0 && 去掉字符串低位的0
#include<bits/stdc++.h>
using namespace std;
int main(){
string s="001235400";
//去掉高位的0
while(s.size()&&s[0]=='0') s=s.substr(1);
cout<<s<<endl;//1235400
//去掉低位的0
while(s.size()&&s.back()=='0') s.pop_back();
cout<<s; //12354
return 0;
}
8.字母大小写转换
#include<bits/stdc++.h>
using namespace std;
int main(){
string s="abc";
int len=s.size();
for(int i=0;i<len;i++){
//小写转大写
s[i]=(s[i]>='a'&&s[i]<='z')?s[i]-'a'+'A':s[i];
}
cout<<s<<endl;//ABC
string str="ABCDH";
int l=str.size();
for(int i=0;i<l;i++){
//大写转小写
str[i]=(str[i]>='A'&&str[i]<='Z')?str[i]-'A'+'a':str[i];
}
cout<<str;//abcdh
return 0;
}
9.string型数字相加
#include<bits/stdc++.h>
using namespace std;
string add(string a,string b){
int carry=0;
while(a.size()<b.size()) a='0'+a;
while(a.size()>b.size()) b='0'+b;
string s=a;
for(int i=a.size()-1;i>=0;i--){
s[i]=(a[i]-'0'+b[i]-'0'+carry)%10+'0';
carry=(a[i]-'0'+b[i]-'0'+carry)/10;
}
if(carry>0) s='1'+s;
return s;
}
int main(){
string a="12";
string b="159";
string ans=add(a,b);
cout<<ans;//171
return 0;
}
10.判断闰年
#include<bits/stdc++.h>
using namespace std;
int main(){
int y;
cin>>y;
if((y%4==0&&y%100!=0)||y%400==0)
cout<<"Yes"<<endl;
else cout<<"No"<<endl;
return 0;
}
版权声明:本文为weixin_52834435原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。