Comet OJ - Contest #7 解题报告

传送门:https://www.cometoj.com/contest/52



A:签到题

题意:多次询问,每次询问给出一个值域区间[l,r],从这区间范围中选出两个整数(可重复),依次求出这俩数的“最大的最小公倍数”、“最小的最小公倍数”、“最大的最大公约数”、最小的最大公约数。

分析:(1)显然,当区间长度为1时,该问题的答案只能是区间中仅有的那个数。

   (2)当区间的长度大于1时,最大的最小公倍数,lcmmax =lcm(ar,ar-1) = ar * ar-1;

                最小的最小公倍数,lcmmin = lcm(al,al) = al;

                最大的最大公约数,gcdmax = gcd(ar,ar) = ar;

                最小的最大公约数,gcdmin = gcd(ar,ar-1) = 1;

 1 #include <bits/stdc++.h>
 2
 3 using namespace std;
 4
 5 int main() {
 6     int t;
 7     scanf("%d",&t);
 8     while (t--) {
 9         int l,r;
10         scanf("%d%d",&l,&r);
11
12         if (l == r) {
13             printf("%d %d %d %d\n",l,l,l,l);
14         } else {
15             printf("%lld %d %d %d\n",(long long)r*(r-1),l,r,1);
16         }
17     }
18
19     return 0;
20 }

B:麻将题

题意:4个人(编号为1~4)围成一个环,相邻两人可以交换位置。现按逆时针顺序给出环上的编号,代表4人在桌上的位置关系。求最少需要交换多少次位置才能满足1的下一个元素是2,2的下一个元素是3,3的下一个元素是4,4的下一个元素是1。

分析:由于环上只有4个元素,交换次数最多不会超过2次,因此我们可以考虑直接枚举情况。

   (1)假如这个序列一开始就满足条件,最少交换次数为 0。

   (2)假如这个序列的位置关系为(1,4,3,2),最少交换次数为 2。

   (3)其余情况最少交换次数均为 1。

 1 #include <bits/stdc++.h>
 2
 3 using namespace std;
 4
 5 int main() {
 6     int num[4],pos = 0;
 7     for (int i=0;i<4;i++) {
 8         scanf("%d",&num[i]);
 9         if (num[i] == 1)
10             pos = i;
11     }
12
13     int arr[4];
14     int pick[4] = {1,4,3,2};
15     bool two = true;
16     for (int i = 0;i<4;i++) {
17         arr[i] = num[pos];
18         pos = (pos + 1)%4;
19         if (arr[i] != pick[i]) {
20             two = false;
21         }
22     }
23
24     if (two) {
25         puts("2");
26     } else {
27         int i = 1;
28         for (;i<4;i++) {
29             if (arr[i] != arr[i-1] + 1) {
30                 break;
31             }
32         }
33         if (i == 4) {
34             puts("0");
35         } else {
36             puts("1");
37         }
38     }
39
40     return 0;
41 }

原文地址:https://www.cnblogs.com/doublebit/p/11348040.html

时间: 2024-11-08 08:32:02

Comet OJ - Contest #7 解题报告的相关文章

Comet OJ - Contest #5

Comet OJ - Contest #5 总有一天,我会拿掉给\(dyj\)的小裙子的. A 显然 \(ans = min(cnt_1/3,cnt_4/2,cnt5)\) B 我们可以感性理解一下,最大的满足条件的\(x\)不会太大 因为当\(x\)越来越大时\(f(x)\)的增长速度比\(x\)的增长速度慢得多 其实可以证明,最大的满足的\(x\)不会超过\(100\) 因为没有任何一个三位数的各位之和大于等于\(50\) 所以我们就直接预处理\(1-99\)所有的合法的 暴力枚举即可 其实

符文能量(Comet OJ - Contest #8)

给Comet OJ打个小广告,挺好用的,比较简洁,给人感觉很好用 Contest #8是我打的第一场本oj比赛,很遗憾A了前两道傻逼题就没思路了,然后就不打算打了....... https://www.cometoj.com/contest/58/problem/C?problem_id=2760 怎么做啊完全不会啊我那么菜,虽然看到是dp但嫌太麻烦就放弃了: 靠后仔细想了想原来这道题很简单: 结构体node e[];储存ai,bi值(当然你用数组我也不拦着),因为合并的方式很特殊,可以不管合并

Comet OJ - Contest #10 B

Comet OJ - Contest #10 B 沉鱼落雁 思维题 题意 : 每个数字最多重复出现三次,有n给数字,让你尽可能的使得相同数字之间的最小距离尽可能大 思路 :分三种情况套路 设 a b c 分别代表出现 一次, 两次, 三次 数字的个数 所有元素至多出现一次,答案为 n,题目规定 所有元素至多出现两次, 例如 1 1 2,可以排列成 1 2 1,所以,答案为 1 例如 1 1 2 2 3,可以排列成 1 2 3 1 2,所有 答案为 2 思考后得出,应该尽可能的把 b 个出现两次的

2020-3-14 acm训练联盟周赛Preliminaries for Benelux Algorithm Programming Contest 2019 解题报告+补题报告

2020-3-15比赛解题报告+2020-3-8—2020-3-15的补题报告 2020-3-15比赛题解 训练联盟周赛Preliminaries for Benelux Algorithm Programming Contest 2019  A建筑(模拟) 耗时:3ms 244KB 建筑 你哥哥在最近的建筑问题突破大会上获得了一个奖项 并获得了千载难逢的重新设计城市中心的机会 他最喜欢的城市奈梅根.由于城市布局中最引人注目的部分是天际线, 你的兄弟已经开始为他想要北方和东方的天际线画一些想法

Atcoder Beginner Contest 124 解题报告

心态爆炸.本来能全做出来的.但是由于双开了Comet oj一个比赛,写了ABC就去搞那个的B题 还被搞死了. 回来写了一会D就过了.可惜比赛已经结束了.真的是作死. A - Buttons #include <cstdio> using namespace std; int main() { int x, y; scanf("%d%d", &x, &y); int ans = x > y ? x : y; if (x > y) x--; else

Comet OJ - Contest #15

https://cometoj.com/contest/79/problem/D?problem_id=4219 题目描述 ※ 简单版与困难版的唯一区别是粗体字部份和 $v$ 的数据范围. 在双 11 时,心慧精品店有个特别的折价活动如下: 首先,我们定义一个正整数为"好的"当且仅当此数仅由数字 1 构成,举例来说 1, 11, 111, 11111 都是「好的」,但 10.123.321 都是「不好的」. 接着,若一个商品原价为 x,若顾客能把 x 表示为 k 个「好的」数字,那么此

Comet OJ - Contest #15题解

A 双十一特惠 (简单版) n  <=  1e19,   1e9 > 1(8) https://www.cometoj.com/contest/79/problem/A?problem_id=4198 #include<bits/stdc++.h> using namespace std; int main(){ int t; cin >> t; while(t--) { int cnt1 = 0; int n;cin >> n; int pr[] = {1

AtCoder Beginner Contest 117 解题报告

果然abc都是手速场. 倒序开的qwq. D题因为忘记1e12二进制几位上界爆了一发. A - Entrance Examination 就是除一下就行了... 看样例猜题意系列. #include<cstdio> #include<algorithm> #include<cstring> int main(){ double t,x; scanf("%lf%lf",&t,&x); printf("%lf",t/x

AtCoder Beginner Contest 120 解题报告

为啥最近都没有arc啊... A - Favorite Sound #include <algorithm> #include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> #include <vector> #include <queue> #include <cmath> #include <stack> #