comet oj 7
Posted whocarethat
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了comet oj 7相关的知识,希望对你有一定的参考价值。
A 签到题
题目描述
多次询问,每次询问给一个值域范围 [l,r][l,r],要回答下列四个问题:
从这个范围内选出两个整数(两个数可相同),
(1) 这两个数的最小公倍数最大是多少?
(2) 这两个数的最小公倍数最小是多少?
(3) 这两个数的最大公约数最大是多少?
(4) 这两个数的最大公约数最小是多少?
输入描述
第一行一个数 tt 表示数据组数 (t = 10^4t=104)。
之后 tt 行,每行两个数 l, rl,r 表示一次询问(1 \le l \le r \le 10^91≤l≤r≤109)。
输出描述
对于每个询问,输出一行四个数依次表示这四个问题的答案。(四个数间恰以一个空白字符隔开,每行行末不能有多余的空白字符。)
样例输入 1
2 2 3 1 2
样例输出 1
6 2 3 1 2 1 2 1
提示
对于值域范围 [2,3][2,3]:
lcm( 2 , 3 ) = 6lcm(2,3)=6 是最大的最小公倍数
lcm( 2 , 2 ) = 2lcm(2,2)=2 是最小的最小公倍数
gcd( 3 , 3 ) = 3gcd(3,3)=3 是最大的最大公约数
gcd( 2 , 3 ) = 1gcd(2,3)=1 是最小的最大公约数
对于值域范围 [1,2][1,2]:
lcm( 1 , 2 ) = 2lcm(1,2)=2 是最大的最小公倍数
lcm( 1 , 1 ) = 1lcm(1,1)=1 是最小的最小公倍数
gcd( 2 , 2 ) = 2gcd(2,2)=2 是最大的最大公约数
gcd( 1 , 2 ) = 1gcd(1,2)=1 是最小的最大公约数
#include <iostream> #define LL long long using namespace std; int main() int n; scanf("%d",&n); LL l,r; while(n--) cin>>l>>r; if(l==r) cout<<l; printf(" "); cout<<l; printf(" "); cout<<l; printf(" "); cout<<l; else for(int i=0;i<4;i++) if(i!=0)printf(" "); if(i==0)cout<<r*(r-1); if(i==1)cout<<l; if(i==2)cout<<r; if(i==3)printf("1"); printf("\n"); return 0;
B 麻将题
面麻的时候经常大家已经坐好了,然后抽了每个人对应的自风(也就是坐的位置),每次可以交换相邻的两个人,问让这四个人逆时针顺序依次为 东 南 西 北 最少需要交换几次。
简洁题意:可以理解为有一个长度为 44 的环,上面的元素构成一个长度为 44 的排列,每次可以交换环上相邻两个位置,问至少交换多少次,使得这个环中值为 11 的位置逆时针方向的下一个位置是值为 22 的位置,再下一个位置是值为 33 的位置,再下一个位置是值为 44 的位置(也可能不用交换就满足条件,此时答案就是 00)。
(简洁题意中,可想像成数字 1,2,3,41,2,3,4 是对应到东南西北)
输入描述
一行四个数,代表逆时针顺序给出环上的元素,保证是一个 1 \sim 41∼4 的排列。
输出描述
输出一行一个数表示最小交换次数。
样例输入 1
3 1 2 4
样例输出 1
1
提示
样例解释:交换第一个数和第四个数之后顺序就是 4,1,2,34,1,2,3 了,满足题目要求顺序(11 的逆时钟方向下个数是 22,再下个数是 33,再下个数是 44)。
思路:总共就4!种排列方式,很容易知道交换几次可以使之按顺序排列。暴力破解。代码如下:
#include <stdio.h> int main() int a,b,c,d; scanf("%d %d %d %d",&a,&b,&c,&d); int e=0,f=1,g=2; if(a==4&&b==1&&c==2&&d==3)printf("%d\n",e); else if(a==3&&b==4&&c==1&&d==2)printf("%d\n",e); else if(a==2&&b==3&&c==4&&d==1)printf("%d\n",e); else if(a==1&&b==2&&c==3&&d==4)printf("%d\n",e); else if(a==1&&b==4&&c==3&&d==2)printf("%d\n",g); else if(a==2&&b==1&&c==4&&d==3)printf("%d\n",g); else if(a==3&&b==2&&c==1&&d==4)printf("%d\n",g); else if(a==4&&b==3&&c==2&&d==1)printf("%d\n",g); else printf("%d\n",f); return 0;
以上是关于comet oj 7的主要内容,如果未能解决你的问题,请参考以下文章