武汉理工大学第三届程序设计竞赛(同步赛)A

我要学三角形!!!!

https://ac.nowcoder.com/acm/contest/33634/A

已知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;
    }
}


全部评论

相关推荐

面了100年面试不知...:今年白菜这么多,冬天可以狂吃了
点赞 评论 收藏
分享
10-29 18:20
济南大学 Java
用微笑面对困难:他不是人事吗,怎么净特么不干人事
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务