蓝桥杯第三天

题目链接

        爱丽丝要完成一项修剪灌木的工作。有 N 棵灌木整齐的从左到右排成一排。爱丽丝在每天傍晩会修剪一棵灌 木, 让灌木的高度变为 0 厘米。爱丽丝修剪灌木的顺序是从最左侧的灌木开始, 每天向右修剪一棵灌木。当修剪了最右侧的灌木后, 她会调转方向, 下一天开 始向左修剪灌木。直到修剪了最左的灌木后再次调转方向。然后如此循环往复。

        灌木每天从早上到傍晩会长高 1 厘米, 而其余时间不会长高。在第一天的 早晨, 所有灌木的高度都是 0 厘米。爱丽丝想知道每棵灌木最高长到多高。

输入格式

一个正整数 N, 含义如题面所述。

输出格式

输出 N 行, 每行一个整数, 第 i 行表示从左到右第 i 棵树最高能长到多高。

样例输入

3

样例输出

4
2
4

评测用例规模与约定

对于 30% 的数据, 1<N≤10.

对于 100% 的数据, 1<N≤10000.

运行限制

  • 最大运行时间:1s
    • 最大运行内存: 512M
      #include <iostream>
      #include <algorithm>
      using namespace std;
      int main() {
          int N;
          cin >> N;
          for (int i = 0; i < N; i++) {
              cout << 2 * max(i, N - i - 1)<<endl;
          }
          return 0;
      }

      题目链接

              数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一 部分的数列,只记得其中 N 个整数。

      现在给出这 N 个整数,小明想知道包含这 N 个整数的最短的等差数列有几项?

      输入描述

      输入的第一行包含一个整数 N。

      第二行包含 N 个整数 A1​,A2​,⋅⋅⋅,AN​。(注意 A1​ ∼AN​ 并不一定是按等差数列中的顺序给出)

      输出描述

      输出一个整数表示答案。

      输入输出样例

      示例

      输入

      5
      2 6 4 10 20
      

      输出

      10
      

      样例说明: 包含 2、6、4、10、20 的最短的等差数列是 2、4、6、8、10、12、14、16、 18、20。

      运行限制

    • 最大运行时间:1s
    • 最大运行内存: 256M
      #include <iostream>
      #include <algorithm>
      using namespace std;
      long long A[100001];
      
      int gcd(int m, int n) {
          if (m < n) {
              int temp = m;
              m = n;
              n = temp;
          }
          if (n == 0)return m;
          else
              return gcd(n, m % n);
      }
      int main() {
          int  n;
          cin >> n;
          for (int i = 0; i < n; i++) {
              cin >> A[i];
          }
      
          sort(A, A + n);
          int d = A[1] - A[0];
          for (int i = 1; i < n - 1; i++) {
              d = gcd(A[i + 1] - A[i], d);
          }
          if (A[0] == A[n - 1])cout << n << endl;
          else {
              cout<<(A[n - 1] - A[0]) / d + 1<<endl;
          }
          return 0;
      }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

KMRTOOG

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

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

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

打赏作者

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

抵扣说明:

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

余额充值