iT邦幫忙

2022 iThome 鐵人賽

DAY 2
0
自我挑戰組

30天從0開始的NCPC之旅系列 第 2

[Day 02] UVA100 & UVA 12019 +額外追加練習

  • 分享至 

  • xImage
  •  

由於我們太晚準備,被時間追著跑
老師建議我們先從UVA49道基本題目開始準備比較有感覺
因此今天我嘗試用課餘時間挑戰3題/images/emoticon/emoticon07.gif

俗話說建立信心就要從簡單題目開始著手,那就直接開始使用C++開始吧~

新手朋友可以下載瘋狂程設,裡面有許多完整的UVA題目可練習,提交後也有系統的暗中測資,練習題目可以更心應手唷/images/emoticon/emoticon12.gif


UVA100

點我進入UVA100題目

我的解題思路

  1. 先將基本輸入格式寫好
  2. 跑回圈,範圍設在i~j
  3. 將當時迴圈中的數字i做題目指定運算
  4. 到1時離開運算迴圈
  5. 比較目前算完的次數跟最大值比較並存起來
  6. 印出i值 j值 以及最大的次數
#include <iostream>
#include <cstdlib>

using namespace std;

int main(){

	int i,j,tmp;
	int count=1,Mcount=0;
	
	while(cin>>i>>j){
		cout<<i<<" "<<j<<" ";
		
		if(i>j){
			tmp=i;
			i=j;
			j=tmp;	
		}
			
		for(int t=i;t<=j;t++){
			tmp=t;
			//記數
			do{
				if(tmp%2==0)
					tmp/=2;
				else
					tmp=3*tmp+1;
					
				count++;
			
			}while(tmp!=1);
			Mcount=max(Mcount,count);
			count=1;		
		}
		cout<<Mcount<<endl;
		Mcount=0;
				
		
	}
	
	

}

UVA12019

點我進入UVA12019題目

我的解題思路

  1. 建立每個月有幾天
  2. 建立星期表(餘數0是星期五,餘數1是星期六...)
  3. 輸入case數
  4. 輸入日期
  5. 將日去加上前幾個月的天數,才能得知1月0日~輸入的日期是間隔了幾天
  6. 將天數mod 7天去對照星期表
  7. 輸出
#include <iostream>
#include<string>
using namespace std;

int main()
{
    int days[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    string week[]={"Friday","Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday"};
    
    int N, M, D;
    cin >> N;
    while (N--)
    {
        cin >> M >> D;
        int day = D;
        for (int i = 0; i < M; i++) {day += days[i];}
        
        cout<<week[day%7]<<endl;
    }
    return 0;
}

額外追加練習

點我進入e540: 01585 - Score

我的解題思路

  1. 將基礎變數設好
  2. cin題目要求的輸出行數
  3. 再cin問卷的測試結果
  4. 利用for迴圈和string長度進行總分運算
  5. 當是O時num為答對題目的分數,因為會累加所以num++ 再加至score表示當前總分為X時num會重新歸0
  6. cout結果
  7. n--進入下一次計算,並初始化score和num
#include<iostream>

using namespace std;

int main() {
    int n, score=0, num=0;
    string str;
    cin >> n;
    while (n > 0) {
        cin >> str;
        for (int i = 0; i < str.length(); i++) {
            if (str[i] == 'O') {
                num++;
                score+=num;
            }
            else {
                num = 0;
            }
        }
        cout << score << endl;
        n--; score = 0; num = 0;
    }
}

以上是今天練習時的成果!雖然花費很多時在理解英文題目,題目都是數學邏輯題!一星題是只要想到可以直接寫出那種!

還有47題等著我哈哈哈


上一篇
[Day 01] 前言&如何準備
下一篇
[Day 03] UVA272&UVA11321 & UVA10035
系列文
30天從0開始的NCPC之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言