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;
} 
京公网安备 11010502036488号