3 条题解

  • 1
    @ 2026-10-21 22:19:32
    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=1e5+1;
    int n,q,a[maxn],gcd;
    int main(){
    	cin>>n>>q;
    	for(int i=1;i<=n;i++) cin>>a[i];
    	for(int i=2;i<=n;i++) gcd=__gcd(gcd,abs(a[i]-a[1]));
    	for(int i=1;i<=q;i++) cout<<__gcd(gcd,a[1]+i)<<endl;
    	return 0;
    }
    //包AC!!!
    
    • 0
      @ 2025-11-1 18:44:51
      
      #include <iostream>
      #include <vector>
      #include <algorithm>
      #include <cmath>
      using namespace std;
      
      long long gcd(long long a, long long b) {
          return b == 0 ? a : gcd(b, a % b);
      }
      
      int main() {
          ios::sync_with_stdio(false);
          cin.tie(nullptr);
          
          int n, Q;
          cin >> n >> Q;
          
          vector<long long> a(n);
          for (int i = 0; i < n; i++) {
              cin >> a[i];
          }
          
          // 计算差分数组的gcd
          long long g = 0;
          for (int i = 1; i < n; i++) {
              g = gcd(g, abs(a[i] - a[0]));
          }
          
          // 处理每个询问
          for (int i = 1; i <= Q; i++) {
              long long result = gcd(a[0] + i, g);
              cout << result << "\n";
          }
          
          return 0;
      }
      
      
      • 0
        @ 2025-11-1 18:04:05
        #include <iostream>
        #include <vector>
        #include <cmath>
        using namespace std;
        
        long long gcd(long long a, long long b) {
            a = abs(a);
            b = abs(b);
            while (b != 0) {
                long long temp = a % b;
                a = b;
                b = temp;
            }
            return a;
        }
        
        int main() {
            int n, Q;
            cin >> n >> Q;
            vector<long long> a(n);
            for (int i = 0; i < n; ++i) {
                cin >> a[i];
            }
            
            if (n == 1) {
                for (int i = 1; i <= Q; ++i) {
                    cout << a[0] + i << endl;
                }
            } else {
                long long a0 = a[0];
                long long g = 0;
                for (int j = 1; j < n; ++j) {
                    long long d = a[j] - a0;
                    g = gcd(g, d);
                }
                for (int i = 1; i <= Q; ++i) {
                    long long x = a0 + i;
                    cout << gcd(x, g) << endl;
                }
            }
            
            return 0;
        }
        
        
        • 1

        信息

        ID
        3339
        时间
        1000ms
        内存
        256MiB
        难度
        7
        标签
        递交数
        110
        已通过
        27
        上传者