已知z=|a-b|+|a-c|+|b-c|,且a<b<c,则z=2(c-a),要让z最大,则要让c最大且a最小且满足三角形三边法则,那么我们可以推出c最大为(n-1)/2,且在b=c-1时有最小值a
当然,如果无法满足记得输出0(绝对不是在水字数)
#include <bits/stdc++.h> using namespace std; int main(){ int t; cin>>t; while(t--) { long long n,s,a=0,b=0,c,t; cin>>n; c=(n-1)/2; t=n-c; for(long long i=2;i<=t/2;i++) if(i+c>(t-i)&&t-i+c>i&&i!=t-i&&i!=c&&t-i!=c) {a=i;b=t-i;break;} if(a==0) { cout<<"0"<<endl; continue; } else s=abs(a-b)+abs(a-c)+abs(b-c); cout<<s<<endl; } }