<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; } ``` :::