iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 3
0
自我挑戰組

CPE 一星精選全攻略系列 第 3

Day3 #UVa 100 & UVa 10929

  • 分享至 

  • xImage
  •  

UVa 100 - The 3n + 1 problem

題目說明

題目說明

演算法:
1. 輸入 n
2. 印出 n
3. 如果 n = 1 結束
4. 如果 n 是奇數 那麼 3n+1
5. 否則 n/2
6. 回到 2.
給一數 n 根據演算法我們可以得到一組數列,這組數列的長度稱為 cycle-length
題目會給定兩數,求出兩數間(包含兩數)最長的 cycle-length

做法

直接硬爆就好了,求出範圍間所有的 cycle-length ,找出最大的。

#include <bits/stdc++.h>

using namespace std;

int len(int i) {
    int leng=1;
    while(i!=1){
    if (i & 1)
        i = i * 3 + 1;
    else
        i /= 2;
    leng++;
    }
    return leng;
}

int main() {
    int a, b;
    while (cin >> a >> b) {
        int ans = 0;
        cout << a << " " << b << " ";
        for (int i = min(a, b); i <= max(a, b); i++) {
            ans = max(len(i), ans);
        }
        cout << ans << endl;
    }
    return 0;
}

UVa 10929 - You can say 11

題目連結

題目說明

判斷是否為 11 的倍數。

做法

因為題目說最大可能到 1000 位數,所以我們用 string 存,然後判斷是否為 11 的倍數。

#include <bits/stdc++.h>

using namespace std;

int main() {
    string num;
    while (cin >> num,num!="0") {
        int odd = 0, even = 0;
        bool k=0;
        for(int i=0;i<num.size();i++) {
            if(i%2==0)
                odd=odd+(num[i]-'0');
            else
                even=even+(num[i]-'0');
        }
        int ans;
        ans = abs(odd - even);
        if (ans % 11)
            cout << num << " is not a multiple of 11." << endl;
        else
            cout << num << " is a multiple of 11." << endl;
    }
    return 0;
}

上一篇
Day2 #UVa 10055 & UVa 10035
下一篇
Day4 #UVa 10101 & UVa 10420
系列文
CPE 一星精選全攻略9
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言