# TJPC 11th 測機題解
## PA - 磚頭
### 首殺: wonderhoi
全部加起來就好
因為出題者很壞,a+b+c會超出int的範圍,要開long long才夠
```cpp=
#include<bits/stdc++.h>
using namespace std;
int main(){
long long a , b , c;
cin >> a >> b >> c;
cout << a + b + c << '\n';
}
```
## PB - 你電到我了
### 首殺: wonderhoi
因為輸入的人名會含有空白,所以用getline輸入然後照題目輸出即可
```cpp=
#include<bits/stdc++.h>
using namespace std;
int main(){
string a;
getline( cin , a );
cout << "Hello world, " << a << "!" << '\n';
}
```
## PC - 西格瑪
### 首殺: asdfg1021
題目要你找1~k中沒有出現在A數列裡的數字平方和
先開一個bool陣列判斷從1~k中的數字那些有出現
因為bool沒辦法開到$10^{18}$,且題目只求1~k
所以只要紀錄A數列裡<=k的數即可,其他就不用管他了
*因為出題者很壞,14行的i\*i會超出int的範圍,在開變數時記得開long long
```cpp=
#include<bits/stdc++.h>
using namespace std;
bool b[3000010] = {0};
int main(){
long long n , k , a , ans = 0;
cin >> n >> k;
for( int i = 0 ; i < n ; i++ ){
cin >> a;
if( a <= k )
b[a] = 1;
}
for( long long i = 1 ; i <= k ; i++ ){
if( b[i] == 0 ){
ans += i*i;
}
}
cout << ans << '\n';
}
```
## PD - 王子Dray
### 首殺: asdfg1021
梗題
思考一下就會發現用最多的質數 = 用到的質數最小
最小的偶數質數是2
最小的奇數質數是3
可以推斷某數A = 2\*n + 3 或 2\*n
例如:
100 = 2 \* 50 、 101 = 2 \* 49 + 3 \* 1 、 102 = 2 \* 51
輸入100輸出50、入101輸出50(49+1)、輸入102輸出51
記得開long long,輸入會到 $10^{18}$
```cpp=
#include<bits/stdc++.h>
using namespace std;
int main(){
long long n;
cin >> n;
cout << n/2 << '\n';
}
```
## PE - 溫度換算
### 首殺: asdfg1021
照題意變動n與m,然後找n跟m的最大公因數把他們約分
因為n跟m的最大公因數有可能會<0,要記得加一個絕對值給他
```cpp=
#include <bits/stdc++.h>
using namespace std;
int main() {
int a , b;
cin >> a >> b;
a -= 32*b;
a *= 5;
b *= 9;
int g = abs( __gcd( a , b ) );
cout << a / g << '/' << b / g << '\n';
}
```
* **UPD by Blame 2024/08/13**
**C++內建 __gcd()出來會是負數的,但是gcd()會是正數**
## BONUS
:::spoiler **GPT**
```cpp=
#include <iostream>
#include <cmath> // for abs function
using namespace std;
// 辗转相除法计算最大公约数
long long gcd(long long a, long long b) {
while (b) {
a %= b;
swap(a, b);
}
return a;
}
int main() {
long long N, M;
cin >> N >> M;
// 计算摄氏温度的分子和分母
long long numerator = 5 * (N - 32 * M);
long long denominator = 9 * M;
// 化简分数
long long divisor = gcd(abs(numerator), abs(denominator));
numerator /= divisor;
denominator /= divisor;
// 输出结果
if (denominator == 1) {
cout << numerator << "/1" << endl;
} else {
cout << numerator << "/" << denominator << endl;
}
return 0;
}
```
:::
:::spoiler **Last AC**

:::