[置顶] 蓝桥杯基础练习解题集
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; }
相关文章推荐
- 蓝桥杯 [基础练习VIP] FJ的字符串(Java解题)
- 蓝桥杯 基础练习VIP 分解质因数(Java解题)
- 蓝桥杯 基础练习VIP 字符串对比(Java解题)
- 蓝桥杯 基础练习VIP 龟兔赛跑预测(Java解题)
- 蓝桥杯 [基础练习VIP]Sine之舞(Java解题)
- 蓝桥杯 基础练习VIP 时间转换(Java解题)
- 蓝桥杯 基础练习VIP 矩形面积交(Java解题)
- [蓝桥杯][基础练习VIP]报时助手(Java解题)
- 蓝桥杯基础练习:十进制转十六进制
- 蓝桥杯 基础练习 杨辉三角形(水题,图形输出)
- Java-蓝桥杯-基础练习 字母图形
- 算法-蓝桥杯-基础练习 十六进制转十进制(JAVA)
- 蓝桥杯练习之基础练习 字母图形
- java 蓝桥杯 基础练习 Sine之舞
- 蓝桥杯OJ刷题日记——03-基础练习 字母图形
- 蓝桥杯(Java) 基础练习 01子串
- 蓝桥杯 基础练习 字母图形
- 蓝桥杯:基础练习 01字串【JAVA算法实现】
- 蓝桥杯-基础练习-java-2n皇后问题
- 蓝桥杯 基础练习 字母图形