---
# System prepended metadata

title: 2021.01.12 期末考 題解
tags: [' 題解', ' 109 期末考', 慈中]

---

---
title: 2021.01.12 期末考 題解
tags: 慈中, 109 期末考, 題解
---

# 2021.01.12 期末考 題解

<!-- 個人覺得難度排序：$A > E > B > D > C$ -->

## [A. ](https://tcshoj.tw/problem/1031)

Author：`??`

本題題型：`??`

**標程：[#](https://tcshoj.tw/submission/)**

**驗題：[#](https://tcshoj.tw/submission/)**

## [B. 不要看我的密碼](https://tcshoj.tw/problem/1032)

Author：`??`

本題題型：`字串搜尋`

**標程：[#](https://tcshoj.tw/submission/)**

**驗題：[#](https://tcshoj.tw/submission/)**

**解法：** 先比對每個字串裡的字，之後假如錯誤就停止判斷，正確其輸出 **CORRECT**
 ```cpp
while(realpass[j] == shitpass[i+j])
 ```
**正確 Code：**

```cpp  
// Ans 1 (strstr)

#include<bits/stdc++.h>
using namespace std;
#define LENGTH 500
int main(){
	char search[LENGTH],source[LENGTH];
	cin>>search>>source;
	char *mix = strstr(source, search);
	if (mix == NULL) {
		cout<<"ERROR"; 
	}
	else {
		cout<<"CORRECT";
	}
	return 0;
}

// Ans 2 (Find)

#include <bits/stdc++.h>
using namespace std;
int main() {
    string realPass = "", shitPiece = "";
    cin >> realPass >> shitPiece;
    int check = shitPiece.find(realPass);
    if (check >= 0)
        cout << "CORRECT";
    else
        cout << "ERROR";
    return 0;
}

// Ans 3 ([i]==)

#include <bits/stdc++.h>
using namespace std;
int main() {
    string realPass = "", shitPiece = "", tempSTR = "";
    cin >> realPass >> shitPiece;
    shitPiece += " ";
	for(int i = 0; i < shitPiece.size(); i++){
		tempSTR = "";
		int j = 0;
		while(realPass[j] == shitPiece[i+j]){
			tempSTR += shitPiece[i+j];
			j++;
		}
		if(realPass == tempSTR){
			cout << "CORRECT";
			return 0;
		}
	}
	cout << "ERROR";
	return 0;
}

// Ans 4 (Fixed)
#include <bits/stdc++.h>
using namespace std;
int main(){
    string pw, rand;
	cin >> pw >> rand;
	for (int i = 0; i < rand.size(); i++){
		int j = 0;
		do{
			if(j+1 == pw.size()){
				cout << "CORRECT";
				return 0;
			}
			j++;
		}while (pw[j] == rand [i+j]);
	}
	cout << "ERROR";
}
```

## [C. ](https://tcshoj.tw/problem/1033)


本題題型：`??`

<!-- 本題靈感來源：[Codeforces Round #573 (Div. 2) pA](https://codeforces.com/contest/1191/problem/A) -->

**標程：[#](https://tcshoj.tw/submission/)**

**驗題 ：[#](https://tcshoj.tw/submission/)**

## [D. 聖糕難望](https://tcshoj.tw/problem/1034)

Author：`??`

本題題型：`SCANf特殊輸入、時間加減`


**標程：**
```c++
#include <bits/stdc++.h>
using namespace std;
int main(){
    int n;
    cin >> n;
    for(int i = 0; i < n;i++){
        int MON=0, sDD=0, sHH=0, sMM=0, eMON=0, eDD=0, eHH=0, eMM=0, sTime, eTime, fTime;
        scanf("%d/%d.%d:%d", &MON, &sDD, &sHH, &sMM); // scanf 格式化輸入 
        scanf("%d/%d.%d:%d", &MON, &eDD, &eHH, &eMM); //scanf 格式化輸入 
        sTime = ((((sDD * 24) + sHH ) * 60) + sMM); // 轉換為分鐘
        eTime = ((((eDD * 24) + eHH ) * 60) + eMM); // 轉換為分鐘
        fTime = eTime - sTime;
        
        // 判斷是否超過一天
        if (fTime < 1440) { //1440 為一天的時間(分鐘)
            cout << (fTime / 60) << " 還不能吃蛋糕喔 ";
            fTime = 1440 - fTime;
            cout << setw(2) << setfill('0') << fTime / 60 << ":" << setw(2) << setfill('0') << fTime - (fTime / 60) * 60
                 << "\n";
        } else {
            cout << (fTime / 60) << " 向上行三問訊禮 ";
            fTime = fTime - 1440;
            cout << setw(2) << setfill('0') << fTime / 60 << ":" << setw(2) << setfill('0') << fTime - (fTime / 60) * 60
                 << "\n";
        }
        // C++
        // setw() 和 setfill() 可補上0
        // setw 是下一個字元要幾格
        // setfill 設定空白地方補上甚麼

        // C
        // printf("%02d",x);

        // 或是用 if
        // if(fMM/60 < 10){
        //     cout << "0";
        // } cout << fMM/60 << ":";
    }
}
```

## [E. ](https://tcshoj.tw/problem/1035)

Author：`??`

本題題型：`??`

**標程：[#](https://tcshoj.tw/submission/)**


## 結語
