ポータル:https://www.cometoj.com/contest/52
A:出席問題
問題の意味は、順次「最大の最小公倍数」を取得するたびに与えられた質問範囲区間[L、R]、二つの整数(繰り返される)から選択された間隔の範囲は、多分数、何回も聞か「最小の最小公倍数」、「最大公約数」、最小公約数。
分析:(1)明らかに、とき1の間隔の長さ、この質問に対する答えは、その数だけゾーンにすることができます。
(2)間隔の長さが1より大きい場合、最小公倍数の最大値、LCM 最大 = LCM(R&LT、R&LT-1)A = R&LT * R&LT-1。
最小の最小公倍数、LCMの分 = LCM(L、Lは)= Lと、
最大公約数、GCD 最大 = GCD(R&LT、R&LT)A = R&LT。
最小公約数、GCDの分 = GCD(R&LT、R&LT-1)= 1。
1つの#include <ビット/ STDC ++ H>
2
3 使用して 名前空間STDを、
4
5 INT メイン(){
6 int型T。
7 のscanf(" %dの"、&T)。
8 一方(t-- ){
9 int型のL、R。
10 のscanf(" %dの%のD "、&L&R)。
11
12 であれば(L == R){
13 のprintf(" %D%D%D%D \ n " 、L、L、L、L)。
14 } 他{
15 のprintf(" %LLD%D%D%D \ n "、(長い 長い)R *(R- 1)、L、R、1 )。
16 }
17 }
18
19 戻り 0 ;
20 }
B:麻雀タイトル
問題の意味:(1~4の番号)4つの個体リングに囲まれたが、二つの隣接する位置を交換することができます。今4位置関係テーブルの代わりに、リング上の反時計回りの順序番号で与えられます。最小要件は、次の要素1を満たすために位置を何度も交換する必要があると、次の要素は、次の要素2,2、3,3、4,4であり、次の要素が1です。
分析: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 }