2 solutions

  • 0
    @ 2026-3-11 17:57:42

    #include<bits/stdc++.h> using namespace std; int main(){ long long n; cin>>n; if(n==1) cout<<"1"<<endl; else if(n>=2) cout<<n/2<<endl; return 0; }

    • 0
      @ 2025-10-14 15:07:07

      互质划分

      n10n\leq 10 的数据可以搜索来解决。

      n=1n=1 时划分为一堆。当 n>1n>1 时把 2i1,2i2i-1,2i 划分为一堆,若 nn 是奇数则把 nn 划入最后一堆。相邻的两个正整数互质,相邻的三个正整数 2i1,2i,2i+12i-1,2i,2i+1 也是互质的,因为 gcd(2i1,2i+1)=gcd(2i1,2)=1\gcd(2i-1,2i+1)=\gcd(2i-1,2)=1,所以可以划分为 n2\lfloor \frac{n}{2}\rfloor 堆,并且 22 的倍数共有 n2\lfloor \frac{n}{2}\rfloor 个,每两个都不能在同一组,于是是最少的堆数。

      • 1

      Information

      ID
      1593
      Time
      1000ms
      Memory
      256MiB
      Difficulty
      7
      Tags
      (None)
      # Submissions
      193
      Accepted
      41
      Uploaded By