CodeForces
就叫昵称吧
这个作者很懒,什么都没留下…
展开
-
Codeforces 1A.Theatre Square
CodeForces A.Theatre Square1 题目描述(题目链接)Theatre Square in the capital city of Berland has a rectangular shape with the size n × m meters. On the occasion of the city’s anniversary, a decision was taken to pave the Square with square granite flagstones. Ea原创 2020-06-28 18:18:40 · 201 阅读 · 0 评论 -
Codeforces 1B.Spreadsheets
1 题目描述(题目链接)In the popular spreadsheets systems (for example, in Excel) the following numeration of columns is used. The first column has number A, the second — number B, etc. till column 26 that is marked by Z. Then there are two-letter numbers: column 2原创 2020-06-28 18:55:09 · 193 阅读 · 0 评论 -
Codeforces 3A.Shortest path of the king
1 题目描述(题目链接)2 题解 算一下水平与竖直距离,步数就是二者中最大的那个。然后模拟走路过程。s = input()t = input()level = ord(t[0]) - ord(s[0])vertical = int(t[1]) - int(s[1])steps = max(abs(vertical), abs(level))print(steps)while level or vertical: step = "" if level > 0:原创 2020-06-29 19:01:48 · 139 阅读 · 0 评论 -
Codeforces 4C.Registration system
1 题目描述(题目链接)2 题解 记录每个名字出现的次数。import collectionsn = int(input())names = collections.defaultdict(int)res = []for i in range(n): name = input() if name not in names: res.append('OK') else: res.append(name + str(names[name原创 2020-06-30 19:15:49 · 1451 阅读 · 0 评论 -
Codeforces 6A.Triangle
1 题目描述(题目链接)2 题解 意思是让判断给定的四个数能选三个能否组成三角形,只判断最大的三个数和最小的三个数就可以了。sticks = [int(i) for i in input().split()]sticks.sort()if sticks[1] + sticks[2] > sticks[3] or sticks[0] + sticks[1] > sticks[2]: print("TRIANGLE")elif sticks[1] + sticks[2] =原创 2020-07-10 21:06:41 · 163 阅读 · 0 评论 -
Codeforces 7C.Line
1 题目描述(题目链接)2 题解 扩展欧几里得算法。def ext_gcd(a, b): global x, y if not b: return a g = ext_gcd(b, a % b) x, y = y, x - a//b * y return gif __name__ == "__main__": co = input().split() A, B, C = int(co[0]), int(co[1]), i原创 2020-10-26 15:42:43 · 176 阅读 · 0 评论 -
Codeforces 11B.Jumping Jack
1 题目描述(题目链接)2 题解 由于是两边对称的,所以xxx就取绝对值。假设走nnn步,那么要满足n(n+1)2≥x\frac{n(n+1)}{2}\ge x2n(n+1)≥x,如果相等,那么nnn就是最小步数。如果大于,则需要满足二者之差为偶数,即(n(n+1)2−x)(\frac{n(n+1)}{2}- x)(2n(n+1)−x)为偶。import mathx = abs(int(input()))n = math.ceil(0.5*((8*x+1)**0.5-1))while原创 2020-10-16 15:16:57 · 220 阅读 · 0 评论 -
Codeforces 18C.Stripe
1 题目描述(题目链接)2 题解 用前缀和算。n = int(input())prefix = [] # 前缀和s = 0 # 数组总和res = 0for i in input().split(): s += int(i) prefix.append(s)for i in range(n - 1): if s == 2*prefix[i]: res += 1print(res)...原创 2020-06-30 11:42:32 · 201 阅读 · 0 评论 -
Codeforces 32C.Flea
1 题目描述(题目链接) 题目大意是,现在有一个虫子在m∗nm*nm∗n的方格板上,它每一步可以垂直或水平跳跃sss个单位,要求求出来它能达到最大数量方格的起点位置的数量。2 题解 分为水平和竖直方向计算。from math import ceildata = input().split()m, n, d = int(data[0]), int(data[1]), int(data[2])x = m if m % d == 0 else ceil(m/d)*(m % d)y = n原创 2020-10-19 17:15:36 · 163 阅读 · 0 评论 -
Codeforces 62A.A Student‘s Dream
1 题目描述(题目链接)2 题解 男女要牵手,牵手才舒服,要么男左牵女右,要么男右牵女左,所以两对儿中有一个满足条件,就舒服了。要求很简单:女生不能两个手指连续出现男生不能三个手指连续出现gf = input().split()bf = input().split()al, ar = int(gf[0]), int(gf[1])bl, br = int(bf[0]), int(bf[1])if ar - 1 <= bl <= 2*ar + 2 or al - 1原创 2020-10-24 18:26:41 · 194 阅读 · 0 评论 -
Codeforces 87A.Trains
1 题目描述(题目链接)2 题解 题目大意是说,Vasya有两个女朋友住在不同位置,他要经常去看望她们中的一个,去往她们两个人家的火车发车频率分别是a,ba,ba,b分钟一趟。题目要求他去哪个女友家更频繁一些。所以我们需要对比在一个周期,也就是lcm(a,b)lcm(a,b)lcm(a,b)时间内,去哪个女友家概率更大一点,也就是比较时间长短。 首先令a,ba,ba,b分别除以gcd(a,b)gcd(a,b)gcd(a,b),然后比较大小,小的那个就是答案。相等的情况是∣a−b∣=1|a-b|=原创 2020-10-27 14:24:18 · 154 阅读 · 0 评论 -
Codeforces 185A.Plant
1 题目描述(题目链接)2 题解 设第nnn年向上的三角形个数为f(n)f(n)f(n),向下的三角形个数为g(n)g(n)g(n),根据题目描述,每一个向上的三角形在下一年会产生三个向上的和一个向下的,每一个向下的三角形在县一年会产生三个向下的和一个向上的。因此可以得到下述关系:{f(n)=3∗f(n−1)+g(n−1)g(n)=3∗g(n−1)+f(n−1)\begin{cases}f(n) = 3*f(n-1)+g(n-1)\\g(n) = 3*g(n-1)+f(n-1)\end{c原创 2020-11-03 10:50:27 · 153 阅读 · 0 评论 -
Codeforces 194B.Square
1 题目描述(题目链接)2 题解 输入是nnn,那么结果是:lcm(4∗n,n+1)n+1+1\cfrac{lcm(4*n, n+1)}{n+1} + 1n+1lcm(4∗n,n+1)+1即:4∗ngcd(4∗n,n+1)+1\cfrac{4*n}{gcd(4*n, n+1)} + 1gcd(4∗n,n+1)4∗n+1from math import gcdn = int(input())arr = input().split()res = [4*int(i)//gcd(原创 2020-10-27 23:58:17 · 687 阅读 · 0 评论 -
Codeforces 460B.Little Dima and Equation
1 题目描述(题目链接)2 题解 注意到s(x)s(x)s(x)的值是不超过818181的,因此可以先枚举出这些数字,然后再检查是否满足等式。data = input().split()a, b, c = int(data[0]), int(data[1]), int(data[2])candidate = [b*i**a + c for i in range(1, 82)]res = []def sumx(x): s = 0 while x: s +原创 2020-10-28 15:59:11 · 100 阅读 · 0 评论 -
Codeforces 598A.Tricky Sum
1 题目描述(题目链接)2 题解 前nnn项和减去二倍的等比数列前mmm项和,m=⌊n⌋+1m = \lfloor n\rfloor + 1m=⌊n⌋+1。res=n(n+1)2−2∗(2m−1)res = \cfrac{n(n+1)}{2}-2*(2^m -1)res=2n(n+1)−2∗(2m−1)#include <iostream>#include <cmath>using namespace std;typedef long long ll;ll原创 2020-11-03 16:25:51 · 124 阅读 · 0 评论 -
Codeforces 1379B.Dubious Cyrpto
1 题目描述(题目链接)2 题解 由题意得,na=m+c−bna=m+c-bna=m+c−b,则na∈[m+l−r,m+r−l]na\in [m+l-r,m+r-l]na∈[m+l−r,m+r−l]。对于a∈[l,r]a\in [l,r]a∈[l,r],遍历求解n=⌊m+r−la⌋n=\lfloor \cfrac{m+r-l}{a} \rfloorn=⌊am+r−l⌋,并验证n∗an*an∗a是否在上述范围内,如果在,则b,cb,cb,c的值只需要满足c−b=na−mc-b = na-mc−b=原创 2020-11-04 23:47:39 · 169 阅读 · 0 评论