diff --git a/exercise1.md b/exercise1.md new file mode 100644 index 0000000..e9efb2d --- /dev/null +++ b/exercise1.md @@ -0,0 +1,21 @@ +# 题目:K进制后置零个数 + +花生可很讨厌数学,尤其是各种奇奇怪怪的定义。 +导师让花生可去找一串实验数据的中位数,花生可大声叫“就你是中位数,实验数据有问题就删你”, +结果不小心被导师听到了,导师默默说出“就你不喜欢中位数是吧,实验数据有问题就练你”。 + +计算机拿二进制存数据,但是有的时候会有很多后置零,如2^31就有31个0。 +导师想把后置零单独存储以缩减内存,同时为了未来三进制、四进制电脑的兼容性,导师要求你在 **K进制下求 n 的后置零个数**。 + +## 输入描述 +一行两个整数 `n k`,表示计算 n 的 K 进制表示末尾零的个数。 +- 1 ≤ n ≤ 10^12 +- 2 ≤ k ≤ 10 + +## 输出描述 +输出一个整数,表示 n 在 K 进制下的末尾零个数。 + +## 样例输入 +8 2 +## 样例输出 +3 \ No newline at end of file diff --git a/week1-exercise1 .in b/week1-exercise1 .in new file mode 100644 index 0000000..1a5650b --- /dev/null +++ b/week1-exercise1 .in @@ -0,0 +1,235 @@ +"40 5 +1682 +172 +4137 +346 +2663 +3951 +4980 +3194 +4566 +1554 +2245 +4254 +4878 +1055 +2386 +2301 +4401 +85 +3853 +2360 +1389 +2829 +2784 +2593 +570 +638 +2361 +1707 +4555 +1616 +3716 +880 +4272 +2918 +1200 +2495 +4783 +3508 +4757 +286" +"20 4 +1010 +103 +2483 +208 +1598 +2371 +2988 +1916 +2740 +932 +1347 +2552 +2927 +633 +1432 +1381 +2641 +51 +2312 +1416 +" +"8 1 +1075 +199 +2500 +300 +1644 +2392 +2989 +1952" +"20 6 +1015737 +112436 +2483848 +216707 +1602226 +2372511 +2988000 +1919477 +2740437 +938857 +1352039 +2553297 +2926894 +640583 +1436424 +1385628 +2641515 +60537 +2313708 +1420844" +"9 2 +114183 +29592 +251665 +39357 +169105 +241239 +298877 +198814 +275693" +"100 7 +127455 +48907 +255117 +57974 +178455 +245436 +298957 +206042 +277430 +120770 +156699 +261157 +293643 +94833 +164037 +159620 +268828 +44394 +240323 +162682 +112214 +187063 +184752 +174789 +69604 +73128 +162764 +128723 +276834 +123994 +233232 +85756 +262139 +191706 +102353 +169724 +288675 +222387 +287351 +54865 +73024 +54785 +78434 +267187 +254709 +73441 +280355 +87522 +271930 +107710 +211506 +240124 +158367 +258992 +170128 +172408 +120152 +184535 +99196 +77766 +295003 +206228 +234785 +234534 +187029 +107071 +84123 +171411 +196455 +193225 +208802 +244564 +279026 +218936 +271322 +106860 +295778 +179129 +230626 +298653 +46339 +69471 +134055 +261278 +146524 +94859 +74669 +110300 +249363 +88776 +188731 +285705 +180524 +168049 +167517 +213526 +72643 +74237 +188469 +102073" +"5 4 +140728 +68222 +258570 +76591 +187804" +"8 2 +174365 +71648 +341307 +83505 +241056 +328647 +398636 +277131" +"6 1 +40 +13 +85 +16 +58 +81" +"8 5 +343 +43 +829 +78 +537 +793 +997 +642" diff --git a/week1-exercise1 .md b/week1-exercise1 .md new file mode 100644 index 0000000..41c40b1 --- /dev/null +++ b/week1-exercise1 .md @@ -0,0 +1,32 @@ +# K + +## 题目描述 + +现有 $n$ 个正整数,要求出这 $n$ 个正整数中的第 $k$ 个最小整数(相同大小的整数只计算一次)。 + +## 输入格式 + +第一行为 $n$ 和 $k$; 第二行开始为 $n$ 个正整数的值,整数间用空格隔开。 + +## 输出格式 + +第$k$个最小整数的值;若无解,则输出 `NO RESULT`。 + +## 输入输出样例 #1 + +### 输入 #1 + +``` +10 3 +1 3 3 7 2 5 1 2 4 6 +``` + +### 输出 #1 + +``` +3 +``` + +## 说明/提示 + +$n \leq 10000$,$k \leq 4000$,正整数均小于 $30000$。 diff --git a/week1-exercise1.out b/week1-exercise1.out new file mode 100644 index 0000000..f347964 Binary files /dev/null and b/week1-exercise1.out differ diff --git a/week1-exercise2.in b/week1-exercise2.in new file mode 100644 index 0000000..2828524 --- /dev/null +++ b/week1-exercise2.in @@ -0,0 +1,71 @@ +"3 +336366944 +34259552 +827373662" +"5 +34 +4 +83 +7 +54" +"10 +3364 +343 +8274 +692 +5326 +7902 +9960 +6387 +9132 +3107" +"6 +33636695 +3425956 +82737367 +6913302 +53251719 +79013748" +"3 +67273455 +6852006 +165474750" +"8 +10157 +1124 +24839 +2167 +16022 +23725 +29880 +19195" +"10 +10290 +1317 +24873 +2353 +16116 +23767 +29881 +19267 +27422 +9526" +"7 +134746 +13993 +331002 +27932 +213147 +316118 +398396" +"6 +67472 +7141 +165527 +14105 +106644 +158091" +"3 +6747248 +714163 +16552652" diff --git a/week1-exercise2.md b/week1-exercise2.md new file mode 100644 index 0000000..7dbe30e --- /dev/null +++ b/week1-exercise2.md @@ -0,0 +1,56 @@ +# GCD? GCD! + +## 题目描述 + +awk喜欢 $\mathrm{gcd}$,也就是 **最大公约数**。如果你不知道什么叫做最大公约数,你可以访问 [最大公约数 - OI Wiki](https://oi-wiki.org/math/gcd/)。 + +awk给了你一个正整数 $n$,要你把它分成三个 **互不相等的** 正整数 $a,b,c$ 之和,使得 $\mathrm{gcd}(a,b,c)$ 最大。 + +## 输入格式 + +**本题有多组数据**。 + +第一行一个正整数 $T$,表示数据组数。 + +接下来 $T$ 行,每行一个正整数 $n$。 + +## 输出格式 + +对于每组数据,一行一个整数,表示答案,即最大的 $\mathrm{gcd}(a,b,c)$ 。 + +特别地,如果 $n$ 无法分成三个互不相等的正整数之和,请输出 `-1`。 + +## 输入输出样例 #1 + +### 输入 #1 + +``` +3 +12 +27 +5 +``` + +### 输出 #1 + +``` +2 +3 +-1 +``` + +## 说明/提示 + +【样例解释】 + +将 $12$ 分成 $2+4+6$,可以证明 $\gcd(2,4,6)=2$ 为可能达到的最大值。 + +将 $27$ 分成 $3+6+18$,可以证明 $\gcd(3,6,18)=3$ 为可能达到的最大值。 + +$5$ 无法分成三个互不相等的正整数之和,输出 `-1`。 + +--- + +【数据范围】 + +对于 $100\%$ 的数据,$1\le T \le 100$,$1\le n\le 10^9$。 \ No newline at end of file diff --git a/week1-exercise2.out b/week1-exercise2.out new file mode 100644 index 0000000..9d73fab --- /dev/null +++ b/week1-exercise2.out @@ -0,0 +1,10 @@ +42045868 4282444 8032754 +2 -1 1 1 9 +116 49 1379 4 2 1317 1660 3 1522 239 +1462465 7804 103811 1152217 872979 13168959 +4484897 1142001 27579125 +1451 4 421 197 2 1825 4980 1745 +1715 3 3 181 2686 1 1 1 2 866 +1514 1999 55167 4 23683 28738 2908 +8434 193 1 2015 17774 3 +843406 1 15172 diff --git a/week1-exercise3.in b/week1-exercise3.in new file mode 100644 index 0000000..d233bb4 --- /dev/null +++ b/week1-exercise3.in @@ -0,0 +1,10 @@ +0-670-82162-4 +0-670-82552-3 +9-670-82552-3 +0-445-82599-3 +0-445-81120-3 +0-445-81120-X +9-670-87777-6 +9-670-87757-4 +9-222-87757-4 +9-222-11101-4 diff --git a/week1-exercise3.md b/week1-exercise3.md new file mode 100644 index 0000000..ca8c1ab --- /dev/null +++ b/week1-exercise3.md @@ -0,0 +1,48 @@ +# 识别码吗 + +## 题目描述 + +每一本正式出版的图书都有一个 ISBN 号码与之对应,ISBN 码包括 $9$ 位数字、$1$ 位识别码和 $3$ 位分隔符,其规定格式如 `x-xxx-xxxxx-x`,其中符号 `-` 就是分隔符(键盘上的减号),最后一位是识别码,例如 `0-670-82162-4`就是一个标准的 ISBN 码。ISBN 码的首位数字表示书籍的出版语言,例如 $0$ 代表英语;第一个分隔符 `-` 之后的三位数字代表出版社,例如 $670$ 代表维京出版社;第二个分隔符后的五位数字代表该书在该出版社的编号;最后一位为识别码。 + +识别码的计算方法如下: + +首位数字乘以 $1$ 加上次位数字乘以 $2$ ……以此类推,用所得的结果 $ \bmod 11$,所得的余数即为识别码,如果余数为 $10$,则识别码为大写字母 $X$。例如 ISBN 号码 `0-670-82162-4` 中的识别码 $4$ 是这样得到的:对 `067082162` 这 $9$ 个数字,从左至右,分别乘以 $1,2,\dots,9$ 再求和,即 $0\times 1+6\times 2+……+2\times 9=158$,然后取 $158 \bmod 11$ 的结果 $4$ 作为识别码。 + +你的任务是编写程序判断输入的 ISBN 号码中识别码是否正确,如果正确,则仅输出 `Right`;如果错误,则输出你认为是正确的 ISBN 号码。 + +## 输入格式 + +一个字符序列,表示一本书的 ISBN 号码(保证输入符合 ISBN 号码的格式要求)。 + +## 输出格式 + +一行,假如输入的 ISBN 号码的识别码正确,那么输出 `Right`,否则,按照规定的格式,输出正确的 ISBN 号码(包括分隔符 `-`)。 + +## 输入输出样例 #1 + +### 输入 #1 + +``` +0-670-82162-4 +``` + +### 输出 #1 + +``` +Right +``` + +## 输入输出样例 #2 + +### 输入 #2 + +``` +0-670-82162-0 +``` + +### 输出 #2 + +``` +0-670-82162-4 +``` + diff --git a/week1-exercise3.out b/week1-exercise3.out new file mode 100644 index 0000000..c555af9 --- /dev/null +++ b/week1-exercise3.out @@ -0,0 +1,10 @@ +Right +0-670-82552-2 +9-670-82552-0 +0-445-82599-5 +0-445-81120-X +Right +Right +9-670-87757-1 +9-222-87757-8 +9-222-11101-X