A、牛牛的三角形


Question:


题目描述
牛牛有一个数组长度大小为n,数组中有n个正整数。现在牛牛请你从其中选出三个元素(注意选择元素的下标不能相同,但是其值可以相同)组成一个三角形。
无法做到,请输出一行一个字符串"No solution",反之请输出这三个元素的值。
如果有多种组成三角形的元素组合,你可以输出任意一种
图片说明
输出描述:

如无法做到,请输出一行一个字符串"No solution",反之请输出这三个元素的值。
如果有多种组成三角形的元素组合,你可以输出任意一种。

Analysis:


能组成三角形的条件是任意两边之和大于第三边,数据比较小,可以先从小到大排序,此时能组成三角形的条件显然是前两个元数之和大于第三个元素。分别枚举三个元素图片说明 ,且图片说明
Code:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+1;
template <class T>
inline void read(T &res) {
    char c; T flag = 1;
    while ((c = getchar()) < '0' || c > '9')
        if (c == '-')
            flag = -1;
    res = c - '0';
    while ((c = getchar()) >= '0' && c <= '9')
        res = res * 10 + c - '0';
    res *= flag;
}
ll a[105],n;
int main() {
    read(n);
    for(int i=1;i<=n;++i) {
        read(a[i]);
    }
    sort(a+1,a+1+n);
    for(int i=1;i<n-1;++i)
    for(int j=i+1;j<n;++j)
    for(int k=j+1;k<=n;++k) if(a[i]+a[j]>a[k]) {
        printf("%lld %lld %lld",a[i],a[j],a[k]);
        return 0;
    }
    puts("No solution");
}

B、牛牛的鱼缸


Question:


图片说明
就是求蓝色的边和缸围成的体积,缸的宽为 1 ,高为 h ,长为图片说明
图片说明
Analysis:


立方体的形状有两种,H比较小时是三棱柱,H比较大时是棱台。
情况一:图片说明 图片说明 图片说明
图片说明
明显的,图片说明 ,所以图片说明 ,所以图片说明 。体积就是图片说明
情况2:图片说明
图片说明
明显是一个棱台,体积就是图片说明
显然还是有情况一的图片说明 ,所以图片说明
Code:


#include<bits/stdc++.h>
using namespace std;
const int N=1e5+1;
double h,l,H,L;
double sl,sh,ans;
int main() {
    scanf("%lf%lf%lf%lf",&h,&l,&H,&L);
    sl=h*L/H;
    if(sl<=l) {
        printf("%.6f\n",sl*h/2);
    }
    else {
        sh=H*(sl-l)/L;
        printf("%.6f\n",l*(sh+h)/2);
    }
    return 0;
}