【贪玩巴斯】c/c++ 编程竞赛(ACM、蓝桥杯等)每日一练

第一题

题目描述:

链接:https://ac.nowcoder.com/acm/problem/50906
来源:牛客网
求 a 的 b 次方对 p 取模的值,其中 0≤a,b,p≤109​0≤a,b,p≤109​

输入描述:

三个用空格隔开的整数a,b和p。

输出描述:

一个整数,表示ab mod p的值。

示例1:

输入

2 3 9

输出

8

 

我的代码:

/*
created by AchesonD16
*/
#include<iostream>
#include<math.h>
using namespace std;
 
int main()
{   
    int a,b,p,d,s;
    cin >> a >> b >> p;
 
    d = pow(a,b);
    if (p != 0)
    {
    s = (int) (d % p);
    cout << s << endl;
    }
    else{
        return 0;
    }
 
    return 0;
}

 

结果与总结:

只有百分之六十的通过率!

次方公式: pow(a,b) a 的 b次方  要在最前面加入 头文件 #include<math.h>

 

第二题

 

题目描述:

牛牛现在有一个n个数组成的数列,牛牛现在想取一个连续的子序列,并且这个子序列还必须得满足:最多只改变一个数,就可以使得这个连续的子序列是一个严格上升的子序列,牛牛想知道这个连续子序列最长的长度是多少。

链接:https://ac.nowcoder.com/acm/problem/13134
来源:牛客网

输入描述:

输入包括两行,第一行包括一个整数n(1 ≤ n ≤ 10^5),即数列的长度;
第二行n个整数a_i, 表示数列中的每个数(1 ≤ a_i ≤ 10^9),以空格分割。

输出描述:

输出一个整数,表示最长的长度。

示例1

输入

6 
7 2 3 1 5 6

输出

5

 

我的代码:

//
// Created by AchesonD16 on 2021/4/4.
//

#include<iostream>
using namespace std;
const int N = 1e5+10;  //十的五次方加十
int n,arr[N],s[N],r[N],j;

int main()
{
    n = 0;
    cin >> n;

    for(int i = 1; i <= n; i++)
    {
        cin >> arr[i];
    }

    /*
    for (int i = 0; i < n; i ++) {
        cout << arr[i];
    }
     对数组有没有输入进行遍历输出检查
     */
    //这个for循环是求如果顺利的话 顺着升序列的长度 (第i个数结尾的连续上升子序列长度
    for(int i = 1; i <= n; i++)
    {
        if(arr[i] > arr[i-1])
        {
            s[i] = s[i-1]+1;
        }
        else
            s[i] = 1;
    }

    //第i个数开始的连续上升子序列长度
    for(int i = n; i > 0; i--)
    {
        if(arr[i] < arr[i+1])
            r[i] = r[i+1] + 1;
        else
            r[i] = 1;
    }

    for(int i = 1; i <= n; i++)
    {
        if(arr[i+1] > arr[i-1])
        {
            j = max(j, s[i-1] + r[i+1] + 1);
        }
    }
    cout << j;

    return 0;
}

结果与总结:

💯

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贪玩巴斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值