2-1 《天堂旅行团》
“她是乌云中的最后一缕光,
牢狱里的最后一把钥匙,
我伸手穿过头顶河水,
抓到的最后一根稻草。” ——《天堂旅行团》
众所周知每个天堂都有自己的高度,这些高度决定了它们在人们心中的位置
高度越高,对应的位置也就越靠前
给你一些天堂的高度_h_,请你输出在人们心中位置能排在第二的天堂高度
输入格式
第一行一个正整数 n(2≤_n_≤107)
第二行 n 个正整数 _h_1,_h_2,…,hn 分别表示每个天堂的高度 (1≤_hi_≤105)
输出格式
输出一个正整数,代表能排在第二位的天堂高度
输入样例
3 3 5 4
输出样例
4
样例说明
该样例中,最高的天堂高度为5
,位置排在第二的天堂高度为 4,所以结果为4
#include<iostream>
#include<algorithm>
using namespace std;
int a[10000007];
int main ()
{
int n;
scanf("%d", &n);
int cmax = 0, fmax = 0, secmax =0;
for ( int i = 0; i < n; i ++ )
{
scanf("%d", &a[i]);
fmax = max ( fmax, a[i] );
}
for ( int i = 0; i < n; i ++ )
{
if ( a[i] == fmax ) cmax ++;
if ( a[i] < fmax ) secmax =max ( a[i], secmax );
}
if ( cmax > 1 ) printf("%d", fmax);
else printf("%d",secmax);
return 0;
}
2-2 《肖申克的救赎》
“心若是牢笼,处处为牢笼,自由不在外面,而在于内心。” ——《肖申克的救赎》
有 n 层内心的牢笼,你要从第 1 层开始逐层突破
突破第 i 层会扣除 ai 的心灵力,但你会获得 ai 的救赎值
心灵力不能降到负数,不然你将会变成一具如同行尸走肉的躯壳
已知你有值为 h 的心灵力
那么你最多可以获得多少救赎值?
ps:你当然有可能逃出去
输入格式:
第一行一个 n 表示内心牢笼的层数 (1≤n≤100)
第二行给你 n 个整数 a1,a2,a3,...,an(0≤ai≤100)
第三行一个整数 h 表示你的心灵值 (1≤h≤1000)
输出格式:
输出一个整数,表示你最多可以获得多少救赎值
输入样例:
4 1 2 3 4 4
输出样例:
3
样例说明
开始心灵力为 4
突破第一层后心灵力为 3 ,救赎值为 1
突破第二层后心灵力为 1,救赎值为3
他不能突破第三层,因为突破后心灵力 1−3=−2<0,所以停下了
此时输出的救赎值就是 3
#include<iostream>
using namespace std;
int main(){
int n,h,a[101];
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
cin>>h;
int sum=0;
for(int i=0;i<n;i++)
{ h-=a[i];
if(h<0) break;
sum+=a[i];
}
cout<<sum;
return 0;
}
2-3 请再一次做我的棋子
“世间的事,太痛苦了。我该怎样才能忘却呢?”
“下棋吧。”
“棋,能代替世间吗?”
“能。因为纵横十九道内,栖息着宇宙。”
《王者荣耀》中奕星的大招是画出一个矩形。LT 是一个强迫症患者,如果画出来的矩形不是正方形,他就会很难受。现在告诉你奕星大招的四个顶点,请你判断这个矩形是否为正方形。
输入格式:
第一行输入四个整数 xi(0≤_xi_≤10000)
第二行输入四个整数 yi(0≤_yi_≤10000)
输出格式:
如果矩形是正方形,输出 好耶!,否则输出 emo!。
输入样例:
0 0 2 2 0 2 0 2
输出样例:
好耶!
这个不会😶直接转载大佬代码
# include <stdio.h>
# include <math.h>
int x[4], y[4];
double dis[20];
int id_dis = 0;
double get_Dis ( int x1, int y1, int x2, int y2 ) // (x1, y1)与(x2, y2)的距离
{
long long dirx = x1 - x2; dirx *= dirx;
long long diry = y1 - y2; diry *= diry;
return sqrt(dirx + diry);
}
int equal ( double x, double y ) // 相等返回1,否则返回0
{
if ( fabs(x - y) < 1e-9 )
return 1;
return 0;
}
int main ()
{
int i, j;
for (i = 0; i < 4; i ++ )
scanf("%d",&x[i]);
for (i = 0; i < 4; i ++ )
scanf("%d",&y[i]);
for (i = 0; i < 4; i ++ )
{
for (j = i + 1; j < 4; j ++ )
{
dis[id_dis ++] = get_Dis(x[i], y[i], x[j], y[j]);
}
}
for (i = 0; i < id_dis; i ++ )
{
for (j = i + 1; j < id_dis; j++ )
{
if ( dis[i] > dis[j] )
{
double tmp = dis[i];
dis[i] = dis[j];
dis[j] = tmp;
}
}
}
if ( !equal(dis[0], 0) && equal(dis[0],dis[1]) && equal(dis[1], dis[2]) && equal(dis[2],dis[3]) && equal(dis[4], dis[5]) )
{
if ( equal(dis[0] * sqrt(2), dis[4]))
puts("好耶!");
else puts("emo!");
}
else puts("emo!");
return 0;
}
2-4 《夏摩山谷》
“世界多有荒诞之处,却又分明是生活日常的组成部分。” ——《夏摩山谷》
佛廊深处每天都会出现一个数字_n_ ,方丈对每个数设置了一个宁静值_Q_,Q_的计算公式是这样的:
Q=36×_i=1∑_nj_=1∑_na_=1∑_ib_=1∑_j_(a_×_b)
这样的日子将持续 T 天,请你计算出这个宁静值 Q 并对109+7取模
输入格式:
第 1 行输入一个正整数 T(T≤1000)
第 2 行到 T+1 行每行给你一个数 n(n≤108)
输出格式:
对于每个输入的 n,输出这个数的宁静值 Q
每组数据占一行,每个数后面没有多余的空格
输入样例:
在这里给出一组输入。例如:
5 1 2 16 43 88
//---- Solve函数 int solve( int x );
//---- main函数 int res = 0; for ( int i = 1; i <= n; i ++ )
{ res = res + Solve(i); } //此时 res 表示的就是上式的结果
输出样例:
在这里给出相应的输出。例如:
样例说明
第一个样例:
输入1
Q=36×_i_=1∑1_j_=1∑1_a_=1∑_ib_=1∑_j_(a_×_b)=36×1×1=1=36
第二个样例:
输入2
i=1,j=1时
_Q_1=1×1=1
i=1,j=2时
_Q_2=1×1+1×2=3
i=2,j=1时
_Q_3=1×1+2×1=3
i=2,j=2时
Q_4=1×1+1×2+2×1+2×2=9
∴_Q=36×(_Q_1+_Q_2+_Q_3+_Q_4)=576
提示
i=1∑_n_ 是 i 从 1 到 n 对 ∑ 后面的内容累加到的意思,如:i=1∑5_i_=1+2+3+4+5=15
如 i=1∑_nSolve_(i) 的程序表示为
//---- Solve函数
int solve( int x );
//---- main函数
int res = 0;
for ( int i = 1; i <= n; i ++ ) {
res = res + Solve(i);
}
//此时 res 表示的就是上式的结果
#include<iostream>
using namespace std;
const int mod = 1e9 + 7;
int main ()
{
int T;
scanf("%d", &T);
while (T--)
{
long long n;
scanf("%lld", &n);
printf("%lld\n", n * n % mod * (n +1) % mod * (n + 1) % mod * (n + 2) % mod * (n + 2) %mod);
}
}