题目:wls 有一个整数 n,他想将 1 − n 这 n 个数字分成两组,每一组至少有一个数,并且使得两组数字的和的最大公约数最大,请输出最大的最大公约数。
思路:暴力去找整组数的和的最小因子,那么sum/因子=ans。因为整组数都随便拆.
#include<bits/stdc++.h> using namespace std; int main() { int n,i,j; cin>>n; int sum=n+(n*(n-1))/2; if(n==2){ cout<<1<<endl; return 0; } for(i=2;i<=sqrt(sum);i++){ if(sum%i==0){ cout<<sum/i<<endl; break; } } return 0; }