蓝桥云课-小白月赛-个人感悟

蓝桥云课-小白月赛-个人感悟_第1张图片

第一题:普通遍历就行

#include 
using namespace std;
int main()
{

  int n;
  cin>>n;
  int arr[n+1];
  int i;
  for(i=1;i<=n;i++){
    cin>>arr[i];
  }
  int c=0;
  for(i=2;i<=n-1;i++){
    if((arr[i-1]+arr[i+1])<=arr[i]) c++;
  }
  cout<

 第二题:

蓝桥云课-小白月赛-个人感悟_第2张图片

 这道题我认为的如果数字之和小于10,就让其在第一个位置就行,即最高位,后面输出0就可以

这是第一种情况,第二种情况,即数字之和大于10,每一个位置上最大就是9,所以最高位置肯定是从9开始放,后面如补不成9,就M-9*k的值,之后一直输0就行

#include 
#include
using namespace std;
int main()
{

  int n;
  int k;
  cin>>n>>k;
  int i;
  if(k<=9){
    cout<arr(n);
       for(i=1;i<=n;i++){
          sum+=9;
          if(sum>=k) break;
       }
       int ar=i;
       for(i=1;i<=ar-1;i++){
         cout<<9;
       }
       cout<<(k-(sum-9));
       for(i=1;i<=n-ar;i++){
         cout<<0;
       }
  }
  // 请在此输入您的代码
  return 0;
}

第三题:

蓝桥云课-小白月赛-个人感悟_第3张图片

 思路:

1.写一个判断素数的程序

2.设置一个从n开始的循环,找到最大素数长度

3.设置一个滚动窗口,求解决最大质数长度数组和

代码如下:

#include 
#include
#include
using namespace std;
bool zhishu(int n) {
    int i;
    for (i = 2; i <= sqrt(n); i++) {
        if (n % i == 0) return false;

    }
    return true;
}
int main()
{
    int n;
    int i;
    cin >> n;
    vectorarr(n+1);
    for (i = 1; i < n+1; i++) {
        cin >> arr[i];
    }
    for (i = n;; i--) {
        if (zhishu(i)) break;
    }
    int smax = i;
    int j;
    int sum = 0,maxlen=0;
    for (i = 1; i <=n-smax+1 ; i++) {
        sum = 0;
        for (j = i; j <= i + smax - 1; j++) {
            sum += arr[j];
            
        }
        maxlen = max(maxlen, sum);
    }
    cout << maxlen;

}

你可能感兴趣的:(算法,c++,数据结构)