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