2^k進制數 算法題練習/藍橋杯 【簡單解法,java】

目的:解決這個2^k進制數的問題。

看來半天的題目,沒理解什麼意思。也懶得去理解了,只要解出來了就好了。直接暴力解題。

 

思路

1、先求出這是多少進制數 (這個很簡單,一個 for循環搞定)

2、看看可以分成幾段,直接 w / k ,不能整除的話,結果加1(這裏我理解成,就是最多能爲多少位)

3、一個簡單的累加就好了,你會發現規律就是,累加 上一步計算出來的次數,裏面的循環也簡單。

 

 

代碼:這裏簡單說明一下,自己測試的代碼需要輸入 k  和  w  的,但是提交到系統是讀取文件的。所以給出兩套代碼

 

測試代碼

public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int k = in.nextInt();
        int w = in.nextInt();
        int sum = 1;
        int s = 0;
        int ss = 0;
        
        for (int i = 0;i < k; i++)  //計算出是多少進制
            sum *= 2;
        if (w % k == 0)
            s = w / k;
        else
            s = (w / k) + 1;
        sum = sum - 1;
        for (int i = 2;i <= s; i++){
            sum = sum - 1;
            for (int j = sum;j > 0;j--)
                ss += j;
        }
        System.out.println(ss);
    }

 

提交代碼

public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int k = 0;
        int w = 0;
        int sum = 1;
        int s = 0;
        int ss = 0;

        while (in.hasNext()){
            k = in.nextInt();
            w = in.nextInt();
            for (int i = 0;i < k; i++)  //計算出是多少進制
                sum *= 2;
            if (w % k == 0)
                s = w / k;
            else
                s = (w / k) + 1;
            sum = sum - 1;
            for (int i = 2;i <= s; i++){
                sum = sum - 1;
                for (int j = sum;j > 0;j--)
                    ss += j;
            }
            System.out.println(ss);
        }
    }

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章