3 条题解

  • 1
    @ 2024-12-28 14:24:30

    我们充分发挥人类智慧

    #include <bits/stdc++.h>
    using namespace std;
    int T, a, b;
    int main() {
    	cin >> T;
    	while (T--) {
    		scanf("%d%d", &a, &b);
    		if (a & 1) printf("%d %d\n", b, 1);
    		else printf("1 %d\n",  b);
    	}
    	return 0;
    }
    
    • 1
      @ 2024-10-6 11:37:15

      X6C.もしも 题解

      思路

      按照人类智慧,在 a1=1a_1 = 1 时,序列为 1,a2,1,a2,11, \, a_2 , \, 1 , \, a_2, \, 1 … ;在 a2=1a_2 = 1 时,序列为 a1,1,a1,1,a1a_1, \,1, \, a_1 , \, 1 , \, a_1 …

      所以要想得到 ana_na1a_1a2a_2ana_n

      显然:

      • nn 为奇数时,a1=an,a2=1a_1 = a_n, \, a_2 = 1
      • nn 为偶数时,a1=1,a2=ana_1 = 1, \, a_2 = a_n

      然后,就没有然后了。

      时间复杂度 O(T)O(T)

      Code

      #include <bits/stdc++.h>
      using namespace std;
      
      int T;
      
      int main() {
      	cin >> T;
      	for (int a, b ; T-- ; ) {
      		cin >> a >> b;
      		if (a & 1) 
      		printf("%d %d\n", b, 1);
      		else printf("1 %d\n",  b);
      	}
      	return 0;
      }
      
      • 1
        @ 2024-10-4 16:42:45

        分享一下我是怎么发现这个构造的,观察数据范围,1an1091\le a_n \le10^9,但是题目又要求对于任意 1in1\leq i\leq n,满足 1ai1091\leq a_i\leq 10^9。所以要使 an1=1a_{n-1} = 1an2=ana_{n-2}=a_n,我们继续向前构造数的话就可以发现交替的 an,1,an,1,an,1\dots a_n,1,a_n,1,a_n,1\dots 可以满足题目的要求。

        #include<bits/stdc++.h>
        using namespace std;
        
        int main(){
        	int t;
        	cin>>t;
        	while(t--){
        		int a,b;
        		cin>>a>>b;
        		if(a&1){
        			cout<<b<<' '<<"1\n";
        		}else{
        			cout<<1<<' '<<b<<'\n';
        		}
        	}
        	return 0;
        }
        
        • 1

        信息

        ID
        75
        时间
        3000ms
        内存
        512MiB
        难度
        2
        标签
        递交数
        503
        已通过
        245
        上传者