---
# System prepended metadata

title: 2020 pre _ A
tags: [ytp]

---

---
title: 2020 pre _ A
tags: ytp
---

:::info

:::

## 2020 初賽
### 第一題
#### C++
```cpp=
#include <iostream>
using namespace std;

int main(){
    int K;
    int count;

    cin >> K;

    count = K / 7;
    
    if(count == 0){
        cout << 5;
        return 0;
    }
    if(K % 7 == 0 && count != 0){
        cout << count * 5;
        return 0;
    } else {
        cout << (count+1) * 5;
        return 0;
    }
}
```

#### Python
```python=
i = 0
while i < 1:
    mask = eval(input('enter a K: '))
    try:
        mask = int(mask)
    except:
        print('格式錯誤，請輸入數字')
        continue
    if mask > 99 or mask <= 0:
        print('error')
    else:
        break
a = 1
if mask % 7 == 0:
    ans = mask // 7
else:
    ans = mask // 7 + a
num = ans * 5
print(num)
```
--------------------------------------------------------
### 第二題
#### C++
```cpp=
#include <iostream>
#include <cstring>
#include <algorithm>
#include <math.h>
using namespace std;

const std::string WHITESPACE = " \n\r\t\f\v";

std::string ltrim(const std::string &s){
  size_t start = s.find_first_not_of(WHITESPACE);
  return (start == std::string::npos) ? "" : s.substr(start);
}
 
std::string rtrim(const std::string &s){
  size_t end = s.find_last_not_of(WHITESPACE);
  return (end == std::string::npos) ? "" : s.substr(0, end + 1);
}
 
std::string trim(const std::string &s){
  return rtrim(ltrim(s));
}

int main(){
  string text;
  string delimiter = ",";
  string nums[256];

  getline(cin, text); //比cin還強，可將空格一起輸進來

  int count = 0;
  string num;
  size_t pos = 0;

  while ((pos = text.find(delimiter)) != string::npos){
    num = text.substr(0, pos);
    nums[count++] = trim(num);
    text.erase(0, pos + delimiter.length());
  }
  
  int array[256];
  string y;
  
  nums[count] = trim(text);
  for(int i = 0; i <= count; i++){
    y = nums[i];
    array[i] = atoi(y.c_str());//將string轉為int
  }
  
  int a = array[1];
  int b = array[2];
  int c = array[3];
  
  if(array[1] == 0){
    if(array[0] == 1){
      a = pow(c,2) - pow(b,2);//平方
      a = sqrt(a);//開根號
      cout << a << endl;
    }
    if(array[0] == 2){
      a = c/2 + b;
      cout << a << endl;
    }
    if(array[0] == 3){
      a = c / b;
      cout << a << endl;
    }
  }
  if(array[2] == 0){
    if(array[0] == 1){
      b = pow(c,2) - pow(a,2);
      b = sqrt(b);
      cout << b << endl;
    }
    if(array[0] == 2){
      b = a - (c/2);
      cout << b << endl;
    }
    if(array[0] == 3){
      b = c / a;
      cout << b << endl;
    }
  }
  if(array[3] == 0){
    if(array[0] == 1){
      c = pow(a,2) + pow(b,2);
      c = sqrt(c);
      cout << c << endl;
    }
    if(array[0] == 2){
      c = (a - b) * 2;
      cout << c << endl;
    }
    if(array[0] == 3){
      c = a * b;
      cout << c << endl;
    }
  }
  
  return 0;
}
```

#### Python
```python=
def one(a,b,c):
    '''
    a ** 2 + b ** 2 = c ** 2
    '''
    if '' is a:
        b = int(b)
        c = int(c)
        a = (c ** 2 - b ** 2) ** 0.5
        return '%d'%(a)
    
    if '' is b:
        a = int(a)
        c = int(c)
        b = (c ** 2 - a ** 2) ** 0.5
        return '%d'%(b)
    
    if '' is c:
        a = int(a)
        b = int(b)
        c = (a ** 2 + b ** 2) ** 0.5
        return '%d'%(c)
    else:
        print('wrong')
    
def two(a,b,c):
    '''
    (a - b) * 2 = c
    '''
    if '' is a:
        b = int(b)
        c = int(c)
        a = (c / 2) + b
        return '%d'%(a)
    
    if '' is b:
        a = int(a)
        c = int(c)
        b = a - (c / 2)
        return '%d'%(b)
    
    if '' is c:
        a = int(a)
        b = int(b)
        c = (a - b) * 2
        return '%d'%(c)
    
def three(a,b,c):
    '''
    a * b = c
    '''
    if '' is a:
        b = int(b)
        c = int(c)
        a = c / b
        return '%d'%(a)
    
    if '' is b:
        a = int(a)
        c = int(c)
        b = c / a
        return '%d'%(b)
    
    if '' is c:
        a = int(a)
        b = int(b)
        c = a * b
        return '%d'%(c)

lst = input('enter:').split(',')
p = int(lst[0])
a = lst[1]
b = lst[2]
c = lst[3]
print(lst)
if p == 1:
    print(one(a,b,c))
elif p == 2:
    print(two(a,b,c))
elif p == 3:
    print(three(a,b,c))
else:
    print('wrong')
```
--------------------------------------------------------
### 第三題
#### C++
```cpp=
#include <iostream>
using namespace std;

int main(){
    int R, C;
    int count = 0;
    
    cin >> R >> C;
    
    string word;
    string temp;
    
    for(int i = 0; i <= R; i++){
        getline(cin, word);
        
        for(int j = 0; j < C; j++){
        	if(word[j] == 'X'){
		    count++;
	      }
		if(i > 0){
		    if(word[j] == 'X' && temp[j] == 'X'){
		        count--;
		    }
		}
	  }
	  temp = word;
    }
    
    cout << count;
    
    return 0;
}
```

#### Python
```python=
import random
click = 0
i = 0
test = []

while i < 1:
    lst = input('enter R & C:').split(' ')
    R = int(lst[0])
    C = int(lst[1])
    if 3 <= R <= 1000 and 1 <= C <= 8:
        break
    if R < 3 or R >1000:
        print('R should be 3~1000')
        if C < 1 or C > 8:
            print('C should be 1~8')
    elif C < 1 or C > 8:
            print('C should be 1~8')

while i < R:
    test.append(list(input('')))
    i += 1

for i in range(R):
    for j in range(C):
        if 'X' in test[i][j]:
            click += 1
            if i == 0:
                pass
            elif test[i][j] == test[i - 1][j]:
                click -= 1

print(click)
```
--------------------------------------------------------
### 第四題
#### C++
```cpp=
#include <iostream>
using namespace std;

int main(){
    int N, S, C;
    double count;
    int stop = 0;
    int total = 0;
    int schoolstop = 0;
    
    cin >> N;
    
    for(int i = 0; i < N; i++){
        cin >> S;
        
        int p = 0;
        for(int j = 0; j < S; j++){
	      cin >> C;
	      
	      int num = 0;
	      int array[C]={};
	      for(int x = 0; x < C; x++){
		    cin >> array[x];
		    if(array[x] == 11){
		        num++;
		        p++;
		    }
		}
		
		if(num >= 1){
	          stop = stop + C;
	      }
	      
	      if(num > 1 || p > 1){
	          schoolstop++;
	      }
		total = total + C;
	  }
	  
    }
    
    count = N / 3.0;
    
    if(schoolstop >= count){
        cout << total;
    } else {
        cout << stop;
    }
    
    return 0; 
}
```

#### Python
```python=

```
--------------------------------------------------------
### 第五題
#### C++
```cpp=
#include <iostream>
using namespace std;

int main(){
    int N;
    int K = 1;
    int temp;
    int count = 0;
    int judge = 0;
    
    cin >> N;
    
    int X = N/2;
    int array[N] = {};
    
    for(int i = 0; i < N; i++){
        cin >> array[i];
    }
    if(judge == 0){
        for(int i = 0; i < N; i++){
            if(array[i] == i+1 || array[i] == array[i+1]){
                cout << "-1";
	          return 0;
	      }
        }
    }
    judge++;
    
    for(int i = 0; i < X; i++){
        int Y = 0;
    	  while(array[i] != i+1){
            for(int j = 0; j < N; j++){
        	    if(array[i] == j+1){
	              temp = array[i];
	              array[i] = array[j];
	              array[j] = temp;
	          }
	      }
	  }
	  count++;
	  for(int z = 0; z < N; z++){
	      if(array[z] == z+1){
		    Y++;
		}
	  }
	  
	  if(Y == N){
	      break;
	  }
    }
    
    for(int i = 0; i <= X; i++){
        if(count == i+2){
            K = K + i+1;
        }
    }
    
    cout << K;
    
    return 0;
}
```

#### Python
```python=
def wheter():
    lst.sort()
    for j in range(people):
        if lst[j] == lst[j - 1]:
            print('-1')
            return False
            break
    if '0' in lst:
        print('-1')
        return False
    for j in range(people):
        if array[j] == j + 1:
            print('-1')
            return False
            break
    return True

def cal():
    circle = 1
    count = 0

    for k in range(len(array) // 2):
        y = 0
        while array[k] != (k + 1):
            for q in range(people):
                if array[k] == (q + 1):
                    array[k],array[q] = array[q],array[k]
        count += 1
        for z in range(people):
            if array[z] == (z + 1):
                y += 1
        if (y == people):
            break
    
    for k in range(len(array) // 2):
        if (count == (k + 2)):
            circle += (k + 1)
    print(circle)

i= 0
while i < 1:
    people = int(input('ppl:'))
    if people < 1 or people > 5 * (10 ** 5):
        print('1 ≤ 𝑁 ≤ 5 ∙1 0^5')
    else:
        break

while i < 1:
    lst = input('').split(' ')
    array = list(map(int,lst))
    if len(array) != people:
        print('lst can  only', people,'in list')
        continue
    else:
        break

a = False
a = wheter()

if a is True:
    cal()
```
--------------------------------------------------------