11/27

Ze1da發表於2024-11-27

汽水瓶
某商店規定:三個空汽水瓶可以換一瓶汽水,允許向老闆借空汽水瓶(但是必須要歸還)。
小張手上有n個空汽水瓶,她想知道自己最多可以喝到多少瓶汽水。
資料範圍:輸入的正整數滿足
1

n

100

1≤n≤100

注意:本題存在多組輸入。輸入的 0 表示輸入結束,並不用輸出結果。

點選檢視程式碼
#include <iostream>
using namespace std;

int main() {
    int a  = 10;
    while(a--){
        int s ,x , y, z, result;
        result = 0;
        cin >> x; 
        z = x % 3;
        while(x / 3 != 0){
            result += x / 3;
            x = x / 3;
        }
        s = result + z + 1;
        if(s %3 == 0){
            result = result + 1;
        }
        cout << result << endl;
    }
    return 0;
}
// 64 位輸出請用 printf("%lld")
自己想多了,其實相當於兩個空汽水瓶換一個汽水

明明的隨機數
明明生成了
N
N個1到500之間的隨機整數。請你刪去其中重複的數字,即相同的數字只保留一個,把其餘相同的數去掉,然後再把這些數從小到大排序,按照排好的順序輸出。

資料範圍:
1

n

1000

1≤n≤1000 ,輸入的數字大小滿足
1

v
a
l

500

1≤val≤500
``

點選檢視程式碼
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int main() {
    int n;
    cin >> n;
    vector<int> a;
    for(int i = 0 ; i < n; i++ ){
        int b;
        cin >> b;
        a.push_back(b);
    }
    sort(a.begin(),a.end());
    auto last = unique(a.begin(), a.end());
    a.erase(last, a.end());
    for (int i = 0; i < a.size() ; i++) {
        cout << a[i] << endl;
    }
    return 0;
}
// 64 位輸出請用 printf("%lld")
使用sort,unique和erase簡單處理

進位制轉換
寫出一個程式,接受一個十六進位制的數,輸出該數值的十進位制表示。

資料範圍:保證結果在
1≤n≤2 31 −1

點選檢視程式碼
#include <iostream>
#include <vector>
using namespace std;

int main() {
    string a;
    vector<char> ab;
    cin >> a;
    for (char c : a) {
        ab.push_back(c);
    }
    int b = ab.size();
    int result = 0;
        for (int i = 2; i < b; i++) {
        // 轉換字元為相應的十六進位制值
        int hexValue = 0;
        if (ab[i] >= '0' && ab[i] <= '9') {
            hexValue = ab[i] - '0';  // 數字字元轉換為對應的十進位制值
        } else if (ab[i] >= 'A' && ab[i] <= 'F') {
            hexValue = ab[i] - 'A' + 10;  // 字元 'A'-'F' 轉換為 10-15
        } else if (ab[i] >= 'a' && ab[i] <= 'f') {
            hexValue = ab[i] - 'a' + 10;  // 字元 'a'-'f' 轉換為 10-15
        }

        // 計算十六進位制值的貢獻並加到 result 中
        result = result * 16 + hexValue;
    }
    cout << result ;
    return 0;
}
// 64 位輸出請用 printf("%lld")
很簡單