藍橋杯——Java基礎(進位制)
本文屬xxKarina原創,轉載請註明
個人部落格地址:
https://xxkarina.github.io/
在前面的一篇Java基礎部落格中,不少人蠻喜歡的,這讓我備受鼓舞,決定再出藍橋——Java基礎(續)^-^
1.數列排序
問題描述
給定一個長度為n的數列,將這個數列按從小到大的順序排列。1<=n<=200
輸入格式
第一行為一個整數n。
第二行包含n個整數,為待排序的數,每個整數的絕對值小於10000。
輸出格式
輸出一行,按從小到大的順序輸出排序後的數列。
對於簡單的數列排序,我們可以選中使用陣列進行儲存,因為陣列有個好處就是,排序方便sort()
上面的題目要求是使用者輸入的數字為1<=n<=200
但是由於藍橋杯的輸入都是基於正確的輸入的前提下,所以我們可以不對這部分做處理,於是整個題目就可以簡化為:獲取使用者輸入的數,並按從小到大的順序輸出
原始碼如下(通過測試)
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String args[]){
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = scanner.nextInt();
}
Arrays.sort(arr);
for (int i:arr) {
System.out.print(i+" ");
}
}
}
2.十六進位制轉八進位制
問題描述
給定n個十六進位制正整數,輸出它們對應的八進位制數。
輸入格式
輸入的第一行為一個正整數n (1<=n<=10)。
接下來n行,每行一個由09、大寫字母AF組成的字串,表示要轉換的十六進位制正整數,每個十六進位制數長度不超過100000。
輸出格式
輸出n行,每行為輸入對應的八進位制正整數。
這種題目有幾種思路
1.將十六進位制數轉為2進位制之後再轉化為8進位制
2.將十六進位制數轉化為十進位制之後再轉化為8進位制
3.將十六進位制數直接轉為8進位制(推薦)
小編這裡用的是第三種方式,其餘遇到這種這種題目,我們都會想著直接點,越直接越好,那十六進位制直接轉為8進位制是什麼轉呢,實際上系統再執行的時候也是以二進位制的形式進行運算的,只是我們程式設計的時候可以跳過這些步驟
十六進位制轉為八進位制,可以發現,3為16進位制數等價於四位八進位制數,於是找到關係之後,我們就可以可是編寫我們的程式碼:
1.將使用者輸入的十六進位制數進行分解,3位為一組
2.計算分解後的數值,輸出結果
原始碼如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
new Main().systemScanner();
}
public void systemScanner() {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
int length = scanner.nextInt(); //獲取十六進位制數的個數
for (int i = 0; i < length; i++) { //獲取具體的十六進位制數
String str = scanner.next();
//toCharArray()轉化為字元陣列,方便對二進位制位數進行操作
tranform(str.toCharArray(), str.length());
}
}
}
/*
* 3位16進位制等價於4位8進位制
*/
int[] stack = new int[40000];
public void tranform(char[] str, int length) {
char[] buff = new char[4];
int top = -1;
for (int i = length - 1; i >= 0; i -= 3) {
int sum = 0;
for (int j = 0; j < 3 && i - j >= 0; j++) {// i-j>=0防止不夠三個的情況
// 區分是數字,還是字元,進行對應轉換
int tmp = str[i - j] >= '0' && str[i - j] <= '9' ?
str[i - j] - '0' :
str[i - j] - 'A' + 10;
// 將16進位制轉換成10進位制
sum += (tmp << (4 * j));
}
// sum的結果是16進位制轉化10進位制的結果,每3個16進位制變成10進位制,再變8進位制
stack[++top] = sum;
}
while (stack[top] == 0) {// 排除前導為0的判斷
top--;
}
for (int i = top; i >= 0; i--) {
String str1 = Integer.toOctalString(stack[i]);// 從10進位制轉化成8進位制
if (i != top && str1.length() < 4) {
// 不是最左邊的一個,就不用去掉前導0,而預設是去掉0的,所以要進行補會
for (int y = 0; y < 4 - str1.length(); y++)
System.out.print("0");
}
System.out.print(str1);
}
System.out.println();
}
}
3.十六進位制轉十進位制
問題描述
從鍵盤輸入一個不超過8位的正的十六進位制數字符串,將它轉換為正的十進位制數後輸出。
注:十六進位制數中的10~15分別用大寫的英文字母A、B、C、D、E、F表示。
樣例輸入
FFFF
這個題目看似很簡單,但是時刻要注意細節問題,使用的儲存型別的選擇,我這裡選擇了Long型別
樣例輸出
65535
原始碼:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String num = new Scanner(System.in).next();
System.out.println(Long.parseLong(num, 16));
}
}
4.十進位制轉十六進位制
問題描述
十六進位制數是在程式設計時經常要使用到的一種整數的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16個符號,分別表示十進位制數的0至15。十六進位制的計數方法是滿16進1,所以十進位制數16在十六進位制中是10,而十進位制的17在十六進位制中是11,以此類推,十進位制的30在十六進位制中是1E。
給出一個非負整數,將它表示成十六進位制的形式。
輸入格式
輸入包含一個非負整數a,表示要轉換的數。0<=a<=2147483647
輸出格式
輸出這個整數的16進製表示
原始碼:
import java.math.BigInteger;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String num = new Scanner(System.in).nextLine();
BigInteger bnum = new BigInteger(num);
System.out.println(bnum.toString(16).toUpperCase());
}
}
相關文章
- 藍橋杯 基礎練習 十六進位制轉八進位制
- 十進位制轉十六進位制(藍橋杯之前每日一題)每日一題
- 藍橋杯-基礎練習-十進位制轉十六進位制(Python實現)AC程式碼,註釋,適合新手~PythonC程式
- 藍橋杯:基礎練習 查詢整數
- 藍橋杯 【基礎練習】 特殊迴文數
- [藍橋杯][基礎練習VIP]矩形面積交
- Java基礎系列-二進位制操作Java
- java二進位制相關基礎Java
- 藍橋杯 排序排序
- 藍橋杯 分巧克力(Java)Java
- 藍橋杯試題 基礎練習 特殊迴文數
- 藍橋杯 (java) 第39級階梯Java
- Java藍橋杯14年第五題Java
- 藍橋杯之特殊迴文數JAVAJava
- 問題 1462: [藍橋杯][基礎練習VIP]Huffuman樹
- 藍橋杯-N皇后
- 藍橋杯真題
- 計算機基礎進位制轉換(二進位制、八進位制、十進位制、十六進位制)計算機
- 基礎練習 十六進位制轉八進位制
- 藍橋杯基礎練習-找出唯一成對的數
- 藍橋杯演算法提高——字串匹配(Java)演算法字串匹配Java
- 閒聊藍橋杯JAVA - 生成迴文數Java
- 藍橋杯年號字串字串
- 藍橋杯-帶分數
- 藍橋杯-翻硬幣
- 藍橋杯-螞蟻感冒
- 藍橋杯 計算方程
- 藍橋杯-座次問題
- 藍橋杯-長草(BFS)
- 藍橋杯-日期問題
- 藍橋杯-班級活動
- [計算機基礎] 計算機進位制轉換:二進位制、八進位制、十進位制、十六進位制計算機
- 方格分割 二進位制列舉+DFS(2017 第八屆藍橋杯省賽A組 第4題)
- 藍橋杯 (java)演算法訓練 數對Java演算法
- 藍橋杯——查詢的妙趣
- 密碼脫落——藍橋杯密碼
- 藍橋杯-串的處理
- 藍橋杯-回形巢狀巢狀