您的位置:首页 > 其它

[置顶] 蓝桥杯基础练习解题集

2018-03-08 17:47 323 查看

蓝桥杯基础题题目列表

BASIC-13 数列排序

#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
const int maxn=1e5;
int a[maxn];

int main()
{
int n;
//int
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}


BASIC-12 十六进制转八进制

思路:

先将十六进制转化为4位一组二进制;然后将二进制3位一组转化为8进制;

#include<iostream>
#include<cmath>
#include<string>
using namespace std;
int main()
{
int n;
cin>>n;
while(n--)
{
string s1,s2;
cin>>s1;
s2="";
for(int i=0;i<s1.length();i++)
{
switch(s1[i])
{
case '0':s2+="0000";break;
case '1':s2+="0001";break;
case '2':s2+="0010";break;
case '3':s2+="0011";break;
case '4':s2+="0100";break;
case '5':s2+="0101";break;
case '6':s2+="0110";break;
case '7':s2+="0111";break;
case '8':s2+="1000";break;
case '9':s2+="1001";break;
case 'A':s2+="1010";break;
case 'B':s2+="1011";break;
case 'C':s2+="1100";break;
case 'D':s2+="1101";break;
case 'E':s2+="1110";break;
case 'F':s2+="1111";break;
default:break;
}
}
int len=s2.length();
if(len%3==1)
s2="00"+s2;
if(len%3==2)
s2="0"+s2;
int num=0;
int flag=0;
for(int j=0;j<s2.length();j+=3)
{
num=4*(s2[j]-'0')+2*(s2[j+1]-'0')+(s2[j+2]-'0');
if(num)
flag=1;
if(flag)
cout<<num;
}
cout<<endl;
}
return 0;
}


java版

这道题的限制比较多,因为最开始说的是十六进制数的长度不超过100000,而long类型才十九位,肯定不能用系统自带的进制转换方法,需要自己写


import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String[] sts = new String
;
for(int i=0;i<n;i++){
sts[i] = sc.next();
}
sc.close();
for(int i=0;i<n;i++){
String strBinary = toBinary(sts[i]);
int len_strBin = strBinary.length();
if(len_strBin%3==1) strBinary = "00"+strBinary;
if(len_strBin%3==2) strBinary = "0"+strBinary;
String strOctal = toOctal(strBinary);
System.out.println(strOctal);
}
}
private static String toOctal(String strBinary) {
int len = strBinary.length();
int k;
StringBuffer stb = new StringBuffer();
if(strBinary.substring(0, 3).equals("000"))
k=3;
else
k=0;
for(int i=k;i<len-2;i+=3){
switch (strBinary.substring(i, i+3)) {
case "000":stb.append("0");break;
case "001":stb.append("1");break;
case "010":stb.append("2");break;
case "011":stb.append("3");break;
case "100":stb.append("4");break;
case "101":stb.append("5");break;
case "110":stb.append("6");break;
case "111":stb.append("7");break;
default:break;
}
}
return stb.toString();
}
private static String toBinary(String strHex) {
int len_str = strHex.length();
StringBuffer stb = new StringBuffer();
for(int i=0;i<len_str;i++){
switch (strHex.charAt(i)) {
case '0':stb.append("0000");break;
case '1':stb.append("0001");break;
case '2':stb.append("0010");break;
case '3':stb.append("0011");break;
case '4':stb.append("0100");break;
case '5':stb.append("0101");break;
case '6':stb.append("0110");break;
case '7':stb.append("0111");break;
case '8':stb.append("1000");break;
case '9':stb.append("1001");break;
case 'A':stb.append("1010");break;
case 'B':stb.append("1011");break;
case 'C':stb.append("1100");break;
case 'D':stb.append("1101");break;
case 'E':stb.append("1110");break;
case 'F':stb.append("1111");break;
default:break;
}
}
return stb.toString();
}
}


BASIC-11 十六进制转十进制

#include<iostream>
#include<cmath>
#include<string>
#include<math.h>
using namespace std;
int main()
{
int n;
string s1,s2;
cin>>s1;
s2="";
for(int i=0;i<s1.length();i++)
{
switch(s1[i])
{
case '0':s2+="0000";break;
case '1':s2+="0001";break;
case '2':s2+="0010";break;
case '3':s2+="0011";break;
case '4':s2+="0100";break;
case '5':s2+="0101";break;
case '6':s2+="0110";break;
case '7':s2+="0111";break;
case '8':s2+="1000";break;
case '9':s2+="1001";break;
case 'A':s2+="1010";break;
case 'B':s2+="1011";break;
case 'C':s2+="1100";break;
case 'D':s2+="1101";break;
case 'E':s2+="1110";break;
case 'F':s2+="1111";break;
default:break;
}
}
int len=s2.length();
if(len%3==1)
s2="00"+s2;
if(len%3==2)
s2="0"+s2;
long long num=0;
for(int j=0;j<s2.length();j++)
{
double tmp=s2.length()-j-1;
num=num+pow(2,tmp)*(s2[j]-'0');
}
cout<<num<<endl;
return 0;
}


java版

import java.util.Scanner;
public class Main{
public static void main(String[]args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String hex=sc.nextLine();
System.out.println(Long.parseLong(hex,16));
}
}

}


BASIC-10 十进制转十六进制

//package com.bryce1010.demo;

import java.util.Scanner;
import java.math.*;
import java.text.*;

public class Main {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
Integer n=in.nextInt();
in.close();
System.out.println(Integer.toHexString(n).toUpperCase());
}

}


BASIC-9 特殊回文数

#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int n1=10001;
while(n1<100000)
{
int a,b,c,d,e;
a=n1/10000;
b=n1%10000/1000;
c=n1%1000/100;
d=n1%100/10;
e=n1%10;
if(a+b+c+d+e==n&&a==e&&b==d)
cout<<n1<<endl;
n1++;
}
int n2=100001;
while(n2<1000000)
{
int a,b,c,d,e,f;
a=n2/100000;
b=n2%100000/10000;
c=n2%10000/1000;
d=n2%1000/100;
e=n2%100/10;
f=n2%10;
if(a+b+c+d+e+f==n&&a==f&&b==e&&c==d)
cout<<n2<<endl;
n2++;
}
return 0;
}


BASIC-8 回文数

#include<iostream>
using namespace std;
int main()
{
int n=1001;
while(n<10000)
{
int a,b,c,d;
a=n/1000;
b=n%1000/100;
c=n%100/10;
d=n%10;
if(a==d&&b==c)
cout<<n<<endl;
n++;
}
return 0;
}


BASIC-7 特殊的数字

#include<iostream>
using namespace std;
int main()
{
int n=101;
while(n<1000)
{
int a,b,c;
a=n/100;
b=n%100/10;
c=n%10;
if(a*a*a+b*b*b+c*c*c==n)
cout<<n<<endl;
n++;
}
return 0;
}


BASIC-6 杨辉三角形

#include<iostream>

using namespace std;

int trangle[50][50];
int main()
{
int n;
cin>>n;
trangle[1][1]=1;
trangle[2][1]=1;trangle[2][2]=1;
if(n==1)
cout<<trangle[1][1]<<endl;
else if(n==2)
{
cout<<trangle[1][1]<<endl;
cout<<trangle[2][1]<<" "<<trangle[2][2]<<endl;
}
else
{
cout<<trangle[1][1]<<endl;
cout<<trangle[2][1]<<" "<<trangle[2][2]<<endl;
for(int i=3;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
trangle[i][j]=trangle[i-1][j-1]+trangle[i-1][j];
cout<<trangle[i][j]<<" ";
}
cout<<endl;
}
}
return 0;
}


BASIC-5 查找整数

#include<iostream>

using namespace std;

int num[1005];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>num[i];
}
int findnum;
cin>>findnum;
int flag=0;
for(int i=0;i<n;i++)
{
if(num[i]==findnum)
{
cout<<(i+1)<<endl;
flag=1;
break;
}
}
if(flag==0)
cout<<-1<<endl;
return 0;

}


BASIC-4 数列特征

#include<iostream>

using namespace std;

int num[10005];
int main()
{
int n;
cin>>n;
int maxnum=-10001,minnum=10001,sum=0;
for(int i=0;i<n;i++)
{
cin>>num[i];
sum+=num[i];
maxnum=max(maxnum,num[i]);
minnum=min(minnum,num[i]);
}
cout<<maxnum<<endl;
cout<<minnum<<endl;
cout<<sum<<endl;
return 0;

}


BASIC-3 字母图形

思路:会发现每个字母跟它的位置的横纵坐标的绝对值有关系。

#include<iostream>
#include<math.h>
using namespace std;

int main()
{
int n,m;
char ch;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
ch=char(65+abs(j-i));
cout<<ch;
}
cout<<endl;
}
return 0;
}


BASIC-2 01字串

#include<iostream>
#include<math.h>
using namespace std;

int main()
{
for(int i=0;i<=1;i++)
{
for(int j=0;j<=1;j++)
{
for(int k=0;k<=1;k++)
{
for(int h=0;h<=1;h++)
{
for(int m=0;m<=1;m++)
{
cout<<i<<j<<k<<h<<m;
cout<<endl;
}
}
}
}
}
return 0;
}


BASIC-1 闰年判断

#include<iostream>
#include<math.h>
using namespace std;

int main()
{
int n;
cin>>n;
int flag=0;
if(n%4==0&&n%100!=0)
{
cout<<"yes"<<endl;
flag=1;
}
else if(n%400==0&&flag==0)
cout<<"yes"<<endl;
else cout<<"no"<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: