<style>
html, body, .ui-content {
background-color: #333;
color: #ddd;
}
body > .ui-infobar {
display: none;
}
.ui-view-area > .ui-infobar {
display: block;
}
.markdown-body h1{
color: #9CCEF2;
}
.markdown-body h2,
.markdown-body h3{
color: #B1D6CA;
}
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
color: #ddd;
}
.markdown-body h1,
.markdown-body h2 {
border-bottom-color: #ffffff69;
}
.markdown-body h1 .octicon-link,
.markdown-body h2 .octicon-link,
.markdown-body h3 .octicon-link,
.markdown-body h4 .octicon-link,
.markdown-body h5 .octicon-link,
.markdown-body h6 .octicon-link {
color: #fff;
}
.markdown-body img {
background-color: transparent;
}
.ui-toc-dropdown .nav>.active:focus>a, .ui-toc-dropdown .nav>.active:hover>a, .ui-toc-dropdown .nav>.active>a {
color: white;
border-left: 2px solid white;
}
.expand-toggle:hover,
.expand-toggle:focus,
.back-to-top:hover,
.back-to-top:focus,
.go-to-bottom:hover,
.go-to-bottom:focus {
color: white;
}
.ui-toc-dropdown {
background-color: #333;
}
.ui-toc-label.btn {
background-color: #191919;
color: white;
}
.ui-toc-dropdown .nav>li>a:focus,
.ui-toc-dropdown .nav>li>a:hover {
color: white;
border-left: 1px solid white;
}
.markdown-body blockquote {
color: #bcbcbc;
}
.markdown-body table tr {
background-color: #5f5f5f;
}
.markdown-body table tr:nth-child(2n) {
background-color: #4f4f4f;
}
.markdown-body code,
.markdown-body tt {
color: #eee;
background-color: rgba(230, 230, 230, 0.36);
}
a,
.open-files-container li.selected a {
color: #5EB7E0;
}
</style>
###### tags: `tgirc早修book`
# Ch.01 題目練習
## 四則運算
<font color="FEA0A0">**題目**</font>
1. [Zerojudge a002: 簡易加法](https://zerojudge.tw/ShowProblem?problemid=a002)
2. [Zerojudge d049: 中華民國萬歲!](https://zerojudge.tw/ShowProblem?problemid=d049)
3. [Zerojudge d073: 分組報告](https://zerojudge.tw/ShowProblem?problemid=d073)
>
:::spoiler <font color="FEA0A0">**題解**</font>
1. [Zerojudge a002: 簡易加法](https://zerojudge.tw/ShowProblem?problemid=a002)
```cpp=
#include<iostream>
using namespace std;
int main(){
int a,b; //宣告整數變數a與b
cin>>a>>b; //輸入a與b
cout<<a+b; //輸出(a+b)的值
return 0;
}
```
##
2. [Zerojudge d049: 中華民國萬歲!](https://zerojudge.tw/ShowProblem?problemid=d049)
民國年=西元年-1911
```cpp=
#include<iostream>
using namespace std;
int main(){
int n; //宣告整數變數n
cin>>n; //輸入n
cout<<n-1911; //輸出(n-1911)的值
return 0;
}
```
##
3. [Zerojudge d073: 分組報告](https://zerojudge.tw/ShowProblem?problemid=d073)
這題稍微複雜些,可以先依每個座號列出其組別,然後再觀察其關係。
`1/3` 為 `0` ,在第 `1` 組
`2/3` 為 `0` ,在第 `1` 組
`3/3` 為 `1` ,在第 `1` 組
`4/3` 為 `1` ,在第 `2` 組
`5/3` 為 `1` ,在第 `2` 組
`6/3` 為 `2` ,在第 `2` 組
`7/3` 為 `2` ,在第 `3` 組
...
可以觀察出,每個座號先向後移1後,再除以3,然後再加上1就是他的組別了。
改寫成運算式即為: `(n+1)/3 +1`
```cpp=
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
cout<<(n-1)/3+1;
return 0;
}
```
<!--
4. [d039: 11044 - Searching for Nessy](https://zerojudge.tw/ShowProblem?problemid=d039)
```cpp=
#include<iostream>
using namespace std;
int main(){
int n,a,b;
cin>>n;
while(n--){ //重複輸入n筆測資
cin>>a>>b; //輸入a與b
cout<<(a/3)*(b/3)<<"\n";
}
return 0;
}
```
將每個點隔三格放一個,盡量使面積不重疊即為最佳解。
一樣可列出邊長為 `n` 時,最少需要放幾個點,以觀察其關係(需要最少 `n/3` 個點)。
-->
:::
## 資料型態
<font color="FEA0A0">**題目**</font>
1. [98 / c - Speed of Light
](https://toj.tfcis.org/oj/pro/98/)
:::spoiler <font color="FEA0A0">**題解**</font>
1. [98 / c - Speed of Light
](https://toj.tfcis.org/oj/pro/98/)
按照題目需求,依分、時、日、周,一次一次乘完後輸出。
周除7變回日,再乘上365就是年了。
```cpp=
#include <iostream>
using namespace std;
int main(){
long long int n = 299792458;
cout << "1 Light-second(LS) is " << n << " metres.\n";
n = n * 60; //LM
cout << "1 Light-minute(LM) is " << n << " metres.\n";
n = n * 60;
cout << "1 Light-hour(LH) is " << n << " metres.\n";
n = n * 24;
cout << "1 Light-day(LD) is " << n << " metres.\n";
n = n * 7;
cout << "1 Light-week(LW) is " << n << " metres.\n";
n = (n / 7) * 365;
cout << "1 Light-year(LY) is " << n << " metres.\n";
return 0;
}
```
:::
## ASCII
<font color="FEA0A0">**題目**</font>
1. 輸出 `*`、`8`、`}`、`H` 的 ASCII 編號
2. 讓輸入的字母都後移 3 位吧!(超出 Z 或是 z 時,從 A 或 a 開始)
3. [TOJ 101 / e' - English Alphabet Prime](https://toj.tfcis.org/oj/pro/101/)
:::spoiler <font color="FEA0A0">**題解**</font>
1. 輸出 `*`、`8`、`}`、`H` 的 ASCII 編號
直接使用 `int( ' 字元' )` 的方式取得ASCII碼。
```cpp=
#include <iostream>
using namespace std;
int main(){
cout << int( '*' ) << "\n";
cout << int( '8' ) << "\n";
cout << int( '}' ) << "\n";
cout << int( 'H' );
return 0;
}
```
##
2. 讓輸入的字母都後移 3 位吧!(超出 Z 或是 z 時,從 A 或 a 開始)
直接將ASCII碼加上3即可,另設一個 `if` 判斷是否超過 `z` 或 `Z`,超過就扣26回去。
```cpp=
#include <iostream>
using namespace std;
int main(){
char c;
cin >> c;
c += 3;
if( (c > 'Z' && c < 'a') || (c > 'z') ){
c -= 26;
}
cout << c;
return 0;
}
```
##
3. [TOJ 101 / e' - English Alphabet Prime](https://toj.tfcis.org/oj/pro/101/)
`'A'` 的ASCII碼為 65,而輸入 n 為 1 時應輸出 `'A'`。
因此輸出為 `64 + n` 對應到的字元。
```cpp=
#include <iostream>
using namespace std;
int main(){
int n;
cin >> n;
cout << char( 64 + n );
return 0;
}
```
:::