码迷,mamicode.com
首页 > 其他好文 > 详细

Comet OJ - Contest #7 解题报告

时间:2019-08-13 21:10:22      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:范围   一个   for   div   最大的   ret   event   one   img   

传送门: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 }
View Code

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 }
View Code

 

Comet OJ - Contest #7 解题报告

标签:范围   一个   for   div   最大的   ret   event   one   img   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!