2021级天梯赛 2.1-2.4

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
他不能突破第三层,因为突破后心灵力 13=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);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值