acm之python3系列
只想默默
即使不明确目标,仍然一路奔行
展开
-
51Nod-1058-N的阶乘的长度
51Nod-1058-N的阶乘的长度 1058 N的阶乘的长度输入N求N的阶乘的10进制表示的长度。例如6! = 720,长度为3。Input输入N(1 <= N <= 10^6)Output输出N的阶乘的长度Input示例6Output示例3解题思路 对于求阶乘位数问题,这是一个数学问题,要涉及到一个实用的数学公式——斯特林公式。 利用斯特林公式原创 2017-08-22 22:46:57 · 258 阅读 · 0 评论 -
51Nod-1066-Bash游戏
51Nod-1066-Bash游戏 1066 Bash游戏有一堆石子共有N个。A B两个人轮流拿,A先拿。每次最少拿1颗,最多拿K颗,拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出N和K,问最后谁能赢得比赛。例如N = 3,K = 2。无论A如何拿,B都可以拿到最后1颗石子。Input第1行:一个数T,表示后面用作输入测试的数的数量原创 2017-08-23 10:22:44 · 203 阅读 · 0 评论 -
51Nod-1081-子段求和
51Nod-1081-子段求和 1081 子段求和给出一个长度为N的数组,进行Q次查询,查询从第i个元素开始长度为l的子段所有元素之和。例如,1 3 7 9 -1,查询第2个元素开始长度为3的子段和,1 {3 7 9} -1。3 + 7 + 9 = 19,输出19。Input第1行:一个数N,N为数组的长度(2 <= N <= 50000)。第2 至 N + 1行:原创 2017-08-27 12:56:25 · 324 阅读 · 0 评论 -
51Nod-1085-背包问题
51Nod-1085-背包问题 1085 背包问题在N件物品取出若干件放在容量为W的背包里,每件物品的体积为W1,W2……Wn(Wi为整数),与之相对应的价值为P1,P2……Pn(Pi为整数)。求背包能够容纳的最大价值。Input第1行,2个整数,N和W中间用空格隔开。N为物品的数量,W为背包的容量。(1 <= N <= 100,1 <= W <= 10原创 2017-08-27 13:20:02 · 221 阅读 · 0 评论 -
51Nod-1073-约瑟夫环
51Nod-1073-约瑟夫环 1073 约瑟夫环N个人坐成一个圆环(编号为1 - N),从第1个人开始报数,数到K的人出列,后面的人重新从1开始报数。问最后剩下的人的编号。例如:N = 3,K = 2。2号先出列,然后是1号,最后剩下的是3号。Input2个数N和K,表示N个人,数到K出列。(2 <= N, K <= 10^6)Output最后剩下的人的编号I原创 2017-08-25 18:48:57 · 273 阅读 · 0 评论 -
51Nod-1079-中国剩余定理
51Nod-1079-中国剩余定理 1079 中国剩余定理一个正整数K,给出K Mod 一些质数的结果,求符合条件的最小的K。例如,K % 2 = 1, K % 3 = 2, K % 5 = 3。符合条件的最小的K = 23。Input第1行:1个数N表示后面输入的质数及模的数量。(2 <= N <= 10)第2 - N + 1行,每行2个数P和M,中间用空格分隔原创 2017-08-26 19:31:59 · 293 阅读 · 0 评论 -
51Nod-1088-最长回文子串
51Nod-1088-最长回文子串1088 最长回文子串回文串是指aba、abba、cccbccc、aaaa这种左右对称的字符串。输入一个字符串Str,输出Str里最长回文子串的长度。Input输入Str(Str的长度 <= 1000)Output输出最长回文子串的长度L。Input示例daabaacOutput示例5解题方法 该题解题方法有两种,一种是直接暴力,一种是运用Manac原创 2017-08-28 22:15:46 · 404 阅读 · 0 评论 -
51Nod-1183-编辑距离
51Nod-1183-编辑距离 1183 编辑距离编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。例如将kitten一字转成sitting:sitten (k->s)sittin (e->i)sitti原创 2017-09-05 23:25:19 · 463 阅读 · 0 评论 -
51Nod-1106-质数检测
51Nod-1106-质数检测 1106 质数检测给出N个正整数,检测每个数是否为质数。如果是,输出"Yes",否则输出"No"。Input第1行:一个数N,表示正整数的数量。(1 <= N <= 1000)第2 - N + 1行:每行1个数(2 <= S[i] <= 10^9)Output输出共N行,每行为 Yes 或 No。Input示例52345原创 2017-08-29 15:52:41 · 351 阅读 · 0 评论 -
51Nod-1118-机器人走方格
51Nod-1118-机器人走方格 1118 机器人走方格M * N的方格,一个机器人从左上走到右下,只能向右或向下走。有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果。Input第1行,2个数M,N,中间用空格隔开。(2 <= m,n <= 1000)Output输出走法的数量。Input示例2 3Output示例3解题原创 2017-08-29 16:39:59 · 493 阅读 · 0 评论 -
51Nod-1185-威佐夫游戏 V2
51Nod-1185-威佐夫游戏 V2 1185 威佐夫游戏 V2有2堆石子。A B两个人轮流拿,A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取。拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出2堆石子的数量,问最后谁能赢得比赛。例如:2堆石子分别为3颗和5颗。那么不论A怎样拿,B都有对应的方法拿到原创 2017-09-07 00:15:25 · 404 阅读 · 0 评论 -
51Nod-1134-最长递增子序列
51Nod-1134-最长递增子序列 1134 最长递增子序列给出长度为N的数组,找出这个数组的最长递增子序列。(递增子序列是指,子序列的元素是递增的)例如:5 1 6 8 2 4 5 10,最长递增子序列是1 2 4 5 10。Input第1行:1个数N,N为序列的长度(2 <= N <= 50000)第2 - N + 1行:每行1个数,对应序列的原创 2017-08-29 21:47:27 · 271 阅读 · 0 评论 -
51Nod-1135-原根
51Nod-1135-原根 1135 原根设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根。(其中φ(m)表示m的欧拉函数)给出1个质数P,找出P最小的原根。Input输入1个质数P(3 <= P <= 10^9)Output输出P最小的原根。Input示例3Output示例2解题方法欧拉函数φ(P)原创 2017-08-30 13:34:25 · 234 阅读 · 0 评论 -
51Nod-1136-欧拉函数
51Nod-1136-欧拉函数 1136 欧拉函数对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为Euler's totient function、φ函数、欧拉商数等。例如:φ(8) = 4(Phi(8) = 4),因为1,3,5,7均和8互质。Input输入一个数N。(2 <= N <= 10^9)Output原创 2017-08-30 19:41:50 · 275 阅读 · 0 评论 -
51Nod-1137-矩阵乘法
51Nod-1137-矩阵乘法 1137 矩阵乘法给出2个N * N的矩阵M1和M2,输出2个矩阵相乘后的结果。Input第1行:1个数N,表示矩阵的大小(2 <= N <= 100)第2 - N + 1行,每行N个数,对应M1的1行(0 <= M1[i] <= 1000)第N + 2 - 2N + 1行,每行N个数,对应M2的1行(0 <= M2[i] <= 1原创 2017-09-03 15:37:23 · 330 阅读 · 0 评论 -
51Nod-1181-质数中的质数(质数筛法)
51Nod-1181-质数中的质数(质数筛法) 1181 质数中的质数(质数筛法)如果一个质数,在质数列表中的编号也是质数,那么就称之为质数中的质数。例如:3 5分别是排第2和第3的质数,所以他们是质数中的质数。现在给出一个数N,求>=N的最小的质数中的质数是多少(可以考虑用质数筛法来做)。Input输入一个数N(N <= 10^6)Output输出>=N的最原创 2017-09-04 20:41:11 · 444 阅读 · 0 评论 -
51Nod-1174-区间中最大的数
51Nod-1174-区间中最大的数 1174 区间中最大的数给出一个有N个数的序列,编号0 - N - 1。进行Q次查询,查询编号i至j的所有数中,最大的数是多少。例如: 1 7 6 3 1。i = 1, j = 3,对应的数为7 6 3,最大的数为7。(该问题也被称为RMQ问题)Input第1行:1个数N,表示序列的长度。(2 <= N <= 10000)第2原创 2017-09-04 19:29:19 · 320 阅读 · 0 评论 -
51Nod-1006-最长公共子序列Lcs
1006 最长公共子序列Lcs给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的)。比如两个串为:abcicbaabdkscabab是两个串的子序列,abc也是,abca也是,其中abca是这两个字符串最长的子序列。Input第1行:字符串A第2行:字符串B(A,B的长度 <= 1000)Output输出最长的子序列,如果有多个,随意输出1个。Input示例abc原创 2017-08-17 11:36:15 · 317 阅读 · 3 评论 -
51Nod-1008-N的阶乘 mod P
1008 N的阶乘 mod P输入N和P(P为质数),求N! Mod P = ? (Mod 就是求模 %)例如:n = 10, P = 11,10! = 36288003628800 % 11 = 10Input两个数N,P,中间用空格隔开。(N < 10000, P < 10^9)Output输出N! mod P的结果。Input示例10 11Output示例10一道基础题目,累计原创 2017-08-18 10:43:03 · 192 阅读 · 0 评论 -
51Nod-1011-最大公约数GCD
1011 最大公约数GCD输入2个正整数A,B,求A与B的最大公约数。Input2个数A,B,中间用空格隔开。(1<= A,B <= 10^9)Output输出A与B的最大公约数。Input示例30 105Output示例15一道基础题,测试的是数学功底。 这道题用辗转相除法解答,可以用递归函数简单明了地表达出辗转相除这一数学方法。代码如下:def gcd(a, b): if原创 2017-08-18 10:49:47 · 288 阅读 · 0 评论 -
51Nod-1012-最小公倍数LCM
1012 最小公倍数LCM输入2个正整数A,B,求A与B的最小公倍数。Input2个数A,B,中间用空格隔开。(1<= A,B <= 10^9)Output输出A与B的最小公倍数。Input示例30 105Output示例210一道纯数学题目,先求出最大共约数,再求最小公倍数。 代码如下:def gcd(a, b): if b == 0: return a原创 2017-08-19 10:30:52 · 243 阅读 · 0 评论 -
51Nod-1018-排序
1018 排序给出N个整数,对着N个整数进行排序Input第1行:整数的数量N(1 <= N <= 50000)第2 - N + 1行:待排序的整数(-10^9 <= A[i] <= 10^9)Output共n行,按照递增序输出排序好的数据。Input示例554321Output示例12345题目意思十分明了,这是一个排序问题。对于排序有很多方法,当然能偷懒可以尽量偷原创 2017-08-19 10:43:32 · 236 阅读 · 0 评论 -
51Nod-1019-逆序数
1019 逆序数在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序数是4。给出一个整数序列,求该序列的逆序数。Input第1行:N,N为序列的长度(n <= 50000)第2 - N + 1行:序列中的元素(0 <= A[i] <= 10^9)原创 2017-08-20 16:01:14 · 303 阅读 · 0 评论 -
51Nod-1027-大数乘法
51Nod-1027 大数乘法 1027 大数乘法给出2个大整数A,B,计算A*B的结果。Input第1行:大数A第2行:大数B(A,B的长度 <= 1000,A,B >= 0)Output输出A * BInput示例123456234567Output示例28958703552对于python来说,这种大数算法不存在麻烦,直接两个数相乘即可。 py原创 2017-08-21 20:48:20 · 481 阅读 · 0 评论 -
51Nod-1069-Nim游戏
51Nod-1069-Nim游戏 1069 Nim游戏有N堆石子。A B两个人轮流拿,A先拿。每次只能从一堆中取若干个,可将一堆全取走,但不可不取,拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出N及每堆石子的数量,问最后谁能赢得比赛。例如:3堆石子,每堆1颗。A拿1颗,B拿1颗,此时还剩1堆,所以A可以拿到最后1颗石子。Input第原创 2017-08-24 20:56:50 · 230 阅读 · 0 评论 -
51Nod-1072-威佐夫游戏
51Nod-1072-威佐夫游戏 1072 威佐夫游戏有2堆石子。A B两个人轮流拿,A先拿。每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取。拿到最后1颗石子的人获胜。假设A B都非常聪明,拿石子的过程中不会出现失误。给出2堆石子的数量,问最后谁能赢得比赛。例如:2堆石子分别为3颗和5颗。那么不论A怎样拿,B都有对应的方法拿到最后1颗。Input第1原创 2017-08-24 21:49:43 · 247 阅读 · 0 评论 -
51Nod-1057-N的阶乘
51Nod-1057 N的阶乘 1057 N的阶乘输入N求N的阶乘的准确值。Input输入N(1 <= N <= 10000)Output输出N的阶乘Input示例5Output示例120就python而言,直接暴力计算就行,不必担心变量的数据范围。 代码如下:while True: try: n, ans = int(input(原创 2017-08-22 10:11:26 · 274 阅读 · 0 评论 -
Python3的ACM输入输出格式
接触python不到两个月,但发现自己已经深深迷恋上了这门语言。因为正在学acm缘故,想尝试一下用python写出那些acm题,但是发现,在网上找题解的时候,找的一大片是用C与C++写的。没办法,谁让python运行没有C他们快,比赛几乎没人用python。求人不如求己,自己干脆就用python3敲出一系列的acm题。第一种多组输入模板格式:while True: try:原创 2017-08-15 10:22:33 · 14167 阅读 · 2 评论 -
51Nod-1046-A^B Mod C
51Nod 1046 A^B Mod C 1046 A^B Mod C给出3个正整数A B C,求A^B Mod C。例如,3 5 8,3^5 Mod 8 = 3。Input3个正整数A B C,中间用空格分隔。(1 <= A,B,C <= 10^9)Output输出计算结果Input示例3 5 8Output示例3解题思路:这道题暴力一定会WA的,那么,原创 2017-08-21 21:18:32 · 342 阅读 · 0 评论 -
51Nod-1049-最大子段和
51Nod-1049 最大子段和 1049 最大子段和N个整数组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的连续子段和的最大值。当所给的整数均为负数时和为0。例如:-2,11,-4,13,-5,-2,和最大的子段为:11,-4,13。和为20。Input第1行:整数序列的长度N(2 <= N <= 50000)原创 2017-08-22 08:58:57 · 219 阅读 · 0 评论 -
51Nod-1000-A+B
解题代码如下:while True: try: #把输入的数用map转化为一个存整数类型的列表 caption = list(map(int, input().split())) ans = 0 for i in caption: ans += i print(ans) excep原创 2017-08-15 10:45:30 · 253 阅读 · 0 评论 -
51Nod-1005-大数加法
python里的长整型范围没有限制,仅仅受限与机器内存而已,故而这一题的大数加法对python而言是简单的一道题目,仅仅几行代码就就能搞定。 此题若是用C或C++写,因为受整型范围限制,大数应当先用字符串存储,然后经过一系列地转换,再用字符串来输出结果,代码较为复杂。 解题代码如下:while True: try: A = int(input()) B =原创 2017-08-15 11:07:00 · 271 阅读 · 0 评论 -
51Nod-1240-莫比乌斯函数
51Nod-1240-莫比乌斯函数 1240 莫比乌斯函数 莫比乌斯函数,由德国数学家和天文学家莫比乌斯提出。梅滕斯(Mertens)首先使用μ(n)(miu(n))作为莫比乌斯函数的记号。(据说,高斯(Gauss)比莫比乌斯早三十年就曾考虑过这个函数)。具体定义如下:如果一个数包含平方因子,那么miu(n) = 0。例如:miu(4), miu...原创 2018-05-05 16:58:44 · 368 阅读 · 0 评论