3 条题解

  • 2
    @ 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-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-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
        标签
        递交数
        498
        已通过
        240
        上传者