--- tags: homework, 109, cpi title: '[109-cpi] HW4' --- # Homework 4 > Week 5 (10/12), Due: 10/19 09:00:00 * 範圍:Loop * NOJ --- ## Print a Repeated Pattern > [name=Judge Girl] ### Description 請寫一個程式,讀入正整數 $n$\ 接著會劃分為 $n$ phases\ 第 $i-th$ phases 由正整數序列 $1$ 至 $i$ 所構成 ### Input 一行輸入,包含一正整數 $n$ ### Output 一行輸出,將每個phases輸出並換行 ### Example Input \#1 5 ### Example Output \#1 112123123412345 ### Example Input \#2 8 ### Example Output \#2 112123123412345123456123456712345678 ### Hint * 利用迴圈即可 * 原題連結請見[Link](https://judgegirl.csie.org/problem/0/13) --- ## Three Circles > [name=Judge Girl] ### Description You are given three circles, $C_1$, $C_2$, and $C_3$. The center of $C_1$ is at $(x_1,y_1)$, and its radius is $r_1$. The centers and radius of $C_2$ and $C_3$ are defined similarly. A point $(x,y)$ is within a circle if its distance is less than or equal to the radius of the circle. For example, Both $(1,0)$ and $(0,0)$ are within the circle that centered at $(0,0)$ and has radius $1$. Now given the centers and radius of the three circles, please find the number of points $(x,y)$ where both $x$, and $y$ are integers, that are within odd number of circles. Note that the circles can overlap arbitrarily, however, the radius is no more than $10$. As a result you must be careful about how to test points, so that your program will run fast, and without doing unnecessary testing. 給定三個圓圈 $C_1$, $C_2$ 和 $C_3$。其中 $C_1$ 以 $(x_1,y_1)$ 為圓心、$r_1$ 為半徑。$C_2$ 和 $C_3$ 的圓心與半徑定義與 $C_1$ 類似。當一個點 $(x,y)$ 至圓心的距離小於或等於半徑時,我們可以說這個點位於圓內。例如,$(1,0)$ 和 $(0,0)$ 位於一個以 $(0,0)$ 為圓心、$1$ 為半徑的圓內。現在給定三個圓的圓心與半徑,請找到有多少個格子點位於奇數個圓內。圓與圓之間可以任意重疊,並且圓的半徑不會大於 $10$。注意測試格子點的方法,使得你的程式能夠跑得足夠快、避免做一些不必要的測試。 ### Input The first line of the input is the number of input cases. Each input case has three lines and each line has the $x$, $y$, coordinates of a circle, followed by the radius. The radius is no more than $10$. 第一行輸入一個整數,代表接下來將會有幾組的測試。對於每一組的測試,將會輸入三行。每一行包含三個整數 $x, y, r$,分別代表圓心 $(x, y)$ 以及半徑 $r$。 - $r \le 10$ ### Output 對於每一組測試,輸出有多少個格子點位於奇數個圓內。 ### Example Input ``` 2 0 0 1 0 0 2 2 0 1 0 0 1 1000000 0 1 0 1000000 1 ``` ### Example Output ``` 11 15 ``` ### Hint 格子點 $(x, y)$ 是當 $x$、$y$ 皆是整數的點。 ### Subtask --- ## 心跳!戀愛占卜 > [name=博傑] ### Description 奉心祭,秀知院學園在每年的寒假之前所舉辦的文化祭,是學校裡非常重要的活動之一,今年經過會長的努力爭取,變成了為期兩天的大型活動,全校上下無不熱火朝天的迎接這個年度盛事,當然,大家的亂源 --- 書記也不例外。 關於奉心祭,在學校內一直流傳個一個傳說,只要在這天送出心型的禮物,就可以得到永恆的愛情,而自詡為戀愛偵探的書記,自然也要在這天參一腳,她決定要在奉心祭擺一個攤位 --- 戀愛占卜! 書記她占卜的步驟如下 1. 首先,她會準備一條長 1 公尺($10^9$ 奈米)的透明膠帶,並且我們以一個整數來描述膠帶上的位置,$p$ 代表的是距離膠帶最左邊 $p$ 奈米遠的位置 1. 然後來占卜的客人會隨機挑選兩個數字 $p_1, q_1$,書記也會隨機挑選兩個數字 $p_2, q_2$ 2. 將 $[p_1, p_2], [q_1, q_2]$ 這兩個區間塗上紅色 1. 書記接下來會在心中選定一個數字 $n$,並在接下執行 $n$ 次的摺膠帶操作 1. 每次摺膠帶時,她會隨機挑選一個座標 $x$,以它為中心點,由左向右摺,並且更新膠帶上的座標,原本座標為 $p$ 的位置,在對摺過後會變成 $|p - x|$ 1. 執行完 $n$ 次操作之後,如果紅色的長度她看得順眼的話,那麼她就會為客人送上一個心型吊飾祝福他的愛情 然而,要計算這麼複雜的數學對於 IQ 只有 3 的書記來說實在是太困難了,現在請你寫個程式幫幫書記,算出最後的紅色區域覆蓋長度。 ### Input 第一行為四個以空白隔開之正整數 $p_1, q_1, p_2, q_2$ 第二行為一個正整數 $n$ 接下來 $n$ 行,每行皆為一個整數 $x$ #### Limits $0 \le p_1 < p_2 < q_1 < q_2 \le 10^9$ $1 \le n \le 10^5$ $0 \le x \le 10^9$ ### Output 請輸出一個整數於一行,代表最後的紅色覆蓋長度 ### Example Input ``` 0 10 5 15 1 0 ``` ### Example Output ``` 10 ``` ### Example Input ``` 1 3 2 4 1 2 ``` ### Example Output ``` 1 ``` ### Example Input ``` 0 110 100 120 3 60 10 10 ``` ### Example Output ``` 40 ``` ### Hint 1. 改編自 TOPC 2020, pB 1. 最後書記因為沒辦法以奈米為單位來摺膠帶而沒有擺成,可喜可賀。 #### 第一組範例測資 這組範測給定了兩個線段 $[0, 5]$ 和 $[10, 15]$,兩者長度皆為 $5$,並且後續摺膠帶的位置是 $0$,並沒有影響到兩個紅色線段,所以答案會是 $5 + 5 = 10$ #### 第二組範例測資 這組的線段分別是 $[1, 2]$ 和 $[3, 4]$,並且摺在 $2$ 這個位置上,所以兩個線段的座標都被更新成了 $[0, 1]$,最後覆蓋長度為 $1$ ### Subtask | Case | Describe | Per. | |:--------- |:------------ | ----:| | #1 | $n=1$, $x=0$ | 10% | | #2 | 所有 $x=1$ | 50% | | #3 | 無特殊限制 | 40% | | **Total** | | 100% | --- ## HS Value > 感覺出 digit 還是比較經典\ > 資結 => matrix感覺會被罵XD > [name=育辰] ### Description 阿弘上課時,一心覺得無趣,看著窗外發呆...在腦海中他定義了 $\text{Happy value}$ & $\text{Sad value}$,合稱為 $\text{HS Value}$。 \ \ 是這樣的,今給定一組 $\text{Type}, \ \text{Integer}$, 若型態為 $1$,則為 $\text{Happy value}$, 型態為 $2$,則為 $\text{Sad value}$。 \ \ 假使 $\text{Integer}$ 給定為 $2458$, $\ \text{Happy value}$ 計算則由 $2$ 開始乘以 $1$,加上 $4$ 乘以 $2$...每加一位數,乘的基數就會增加 $1$,因此 $2458$ 的 $\text{Happy value}$ 為$$2 \times 1 + 4 \times 2 + 5 \times 3 + 8 \times 4 = 57$$ \ 而 $\text{Sad value}$ 則是從個位數開始,與以上計算相同,因此 $2458$ 的 $\text{Sad value}$ 為$$8 \times 1 + 5 \times 2 + 4 \times 3 + 2 \times 4 = 38$$ \ $\text{HS value}$ 則為 $\text{Happy value}$ 以及 $\text{Sad value}$ 的「差」,換句話說就是在一維數線上的「距離」,例如上題,則其 $\text{HS value}$ 為 $$|57-38|=19$$\ **正式定義如下:**\ 假定將第 $i$ 位數之數值,定為 $\text{digit}_i$, 則: $$\text{Happy value} = \sum_{i=1}^n{(\text{digit}_i \times (n-i+1))}$$ $$\text{Sad value}= \sum_{i=1}^n{(\text{digit}_i \times i)}$$ $$\text{HS value} = | \, \text{Happy value} - \text{Sad value} \, |$$ ### 測資說明 起初給定一整數 $n$,表示接著有 $n$ 筆資料,接著每行會有一整數 $a_i$,對於每筆資料: * 在該行輸出兩個數值,以一格空格分開,注意**行末沒有空格**,先輸出 $\text{Happy value}$ 再輸出 $\text{Sad value}$ * 隔一行輸出一個整數 $\text{HS value}$,因此,輸出總共應該會有 $2n$ 行 ### Input Line $1$: 一整數 $n$,表示接著有 $n$ 筆輸入資料\ Line $2$ ~ $(n+1)$: 一整數 $a_i$ ### Limit * $1 \leq n \leq 4.5 \times 10^6, \ n \in \mathbb{N}$ * $0 \leq a_i \leq 2^{31}-1, \ a_i \in \mathbb{N}$ * Output的答案不會超出 $2^{31}-1$ ### Output * 針對輸入的每筆資料,先以一行輸出 $\text{Happy value}$ 以及 $\text{Sad value}$,請以空格隔開,行末**沒有空格** * 接著,隔行輸出 $\text{HS value}$ ### Example Input 0 1 2458 ### Example Output 0 57 38 19 ### Example Input 1 4 54321 12345 0 86355231 ### Example Output 1 35 55 20 55 35 20 0 0 0 115 182 67 ### Hint * 拿出紙筆模擬,並標明每次跑的位置,從中觀察規律去設計迴圈 * 注意 Happy value & Sad value是同行以空格隔開,VS value則在隔行輸出 * 範例測資1中 `54321`: 1. `Happy value` $$=5 \times 1 + 4 \times 2 + 3 \times 3 + 2 \times 4 + 1 \times 5$$ $$= 5 + 8 + 9 + 8 + 5$$ $$=35$$ 2. `Sad value` $$=5 \times 5 + 4 \times 4 + 3 \times 3 + 2 \times 2 + 1 \times 1$$ $$= 25 + 16 + 9 + 4 + 1$$ $$= 55$$ 3. `HS value` $$=| \ 35 - 55 \ | = 20$$ * 範例測資1中 `86355231` 1. `Happy value` $$=8 \times 1 + 6 \times 2 + 3 \times 3 + 5 \times 4 + 5 \times 5 + 2 \times 6 + 3 \times 7 + 1 \times 8$$ $$=8+12+9+20+25+12+21+8$$ $$=115$$ 2. `Sad value` $$=8 \times 8 + 6 \times 7 + 3 \times 6 + 5 \times 5 + 5 \times 4 + 2 \times 3 + 3 \times 2 + 1 \times 1$$ $$=64+42+18+25+20+6+6+1$$ $$=182$$ 3. `HS value` $$=| \ 115 - 182 \ | = 67$$ ### Subtask |Case|Describe|Per.| |:--|:--|--:| |#1|$n=1$, $a_i \neq 0$|30%| |#2|無特殊限制|70%| |**Total**||100%| > 該題切入點,百年不變的經典,給定一個數字將其digit全部相加,當然要把題目改難一點,在計算digit的同時需要做額外的處理,這題難度還是不高,但就上週情況看感覺這題AC率猜測會在33% ### [測資載點](https://drive.google.com/file/d/1YY_AfnHWx_yXVL2ALOhSpb8EICNwQtxc/view?usp=sharing) --- ## 大小姐的放學路 > [name=映達] ### Description 放學後學生們皆已離校,學生會室裡也只剩下會長和大小姐。平時的話,大小姐上下學都有專人接送;今天不湊巧,大小姐的手機因為沒電而關機,無法聯絡司機來接她。一切都看在眼裡的會長,決定護送大小姐走路回家。 此時正逢小雪,銀白色中只有兩人的身影,悄然散落的雪花使得整條街格外寧靜。在這樣的時空裡,會長和大小姐必須透過聊天才能免於尷尬。聰明機靈的他們,此時卻因為害羞和緊張,需要間隔一段路程才能找到話題。更嚴重的是,因為變得反應遲緩,兩人皆成為了句點王!好不容易開啟的話題,總會神奇地在三步路以內被結束。 聊天的過程中(雖然話題過於短暫)有一種情況特別讓人心跳加速。「四宮(大小姐)啊⋯⋯」「會長啊⋯⋯」。沒錯!就是當男女同時開口的時候!當兩人同時開口時,總是會頓時語塞,並產生「啊,這個人跟我好有默契啊」的想法(錯覺),不由地心頭一緊、小鹿亂撞。 假設從「校門口」至「大小姐家大門」的距離為 $m$、「兩人目前的位置」至「校門口」的距離為 $x$。每當 $m$ 可以被 $x$ 整除時,會長便會想到一個新的話題,並且開口:「四宮啊⋯⋯」;每當 $x$ 為質數時,大小姐便會想到一個新的話題,並且開口:「會長啊⋯⋯」。每一個話題(因為很短暫)保證都會在其中一人想到新話題前結束、同時開口的情況只會在開啟新話題時發生。請你計算一路上總共會出現幾次,兩人因為同時開口導致的心動時刻(最後一次同時開口有可能發生在大小姐家的大門口)。 ### Input 輸入一個整數 $m$,代表從「校門口」至「大小姐家大門」的距離(先不管距離的單位是什麼,或這個距離合不合理)。對於所有輸入: - $2 \le m \le 10^8$ ### Output 輸出一個整數,代表一路上總共會出現幾次,兩人同時開口的心動時刻。 ### Example Input 0 ``` 88318230 ``` ### Example Output 0 ``` 8 ``` ### Example Input 1 ``` 99999989 ``` ### Example Output 1 ``` 1 ``` ### Hint