数组-2—算法—6-8(P5727,P1047)

洛谷:P5727,P1047

作者:innno

P5727:冰雹猜想

  • 题目描述

给出一个正整数 𝑛n,然后对这个数字一直进行下面的操作:如果这个数字是奇数,那么将其乘 33 再加 11,否则除以 22。经过若干次循环后,最终都会回到 11。经过验证很大的数字(7×10117×1011)都可以按照这样的方式比变成 11,所以被称为“冰雹猜想”。例如当 𝑛n 是 2020,变化的过程是 20→10→5→16→8→4→2→120→10→5→16→8→4→2→1。 根据给定的数字,验证这个猜想,并从最后的 11 开始,倒序输出整个变化序列。

输入格式

输入一个正整数 n

输出格式

输出若干个由空格隔开的正整数,表示从最后的 11 开始倒序的变化数列。

样例 #1

样例输入 #1

20

样例输出 #1

1 2 4 8 16 5 10 20

说明/提示

数据保证,1≤𝑛≤1001≤n≤100。

P5727
/**
 * ClassName: ${NAME}
 * package: ${PACKAGE_NAME}
 * Description:
 * @Author: innno
 * @Create: 2024/2/27 - 21:54
 * @Version: v1.0
 */
#include <bits/stdc++.h>

using namespace std;
using ll = long long;
int main()
    {
        vector<ll> arr;
        ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
        int num;cin>>num;
        int n=1;arr.push_back(num);
        while(num!=1)
            {
                if(num%2==0)
                    {
                        n++;
                        num/=2;
                        arr.push_back(num);
                    }else
                    {
                        n++;
                        num=num*3+1;
                        arr.push_back(num);
                    }
            }
        reverse(arr.begin(),arr.end());
        for(ll & a:arr)
            {
                cout<<a<<" ";
            }
        return 0;
    }

P1047  校门外的树

  • 题目描述

某校大门外长度为 𝑙l 的马路上有一排树,每两棵相邻的树之间的间隔都是 11 米。我们可以把马路看成一个数轴,马路的一端在数轴 00 的位置,另一端在 𝑙l 的位置;数轴上的每个整数点,即 0,1,2,…,𝑙0,1,2,…,l,都种有一棵树。

由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。

输入格式

第一行有两个整数,分别表示马路的长度 𝑙l 和区域的数目 𝑚m

接下来 𝑚m 行,每行两个整数 𝑢,𝑣u,v,表示一个区域的起始点和终止点的坐标。

输出格式

输出一行一个整数,表示将这些树都移走后,马路上剩余的树木数量。

样例 #1

样例输入 #1
500 3
150 300
100 200
470 471

样例输出 #1

298

说明/提示

【数据范围】

  • 对于 20%20% 的数据,保证区域之间没有重合的部分。
  • 对于 100%100% 的数据,保证 1≤𝑙≤1041≤l≤104,1≤𝑚≤1001≤m≤100,0≤𝑢≤𝑣≤𝑙0≤uvl

【题目来源】

NOIP 2005 普及组第二题

P1047
/**
 * ClassName: ${NAME}
 * package: ${PACKAGE_NAME}
 * Description:
 * @Author: innno
 * @Create: 2024/2/27 - 21:54
 * @Version: v1.0
 */
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

int main()
    {
        ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
        ll l, m;
        cin >> l >> m;
        vector<ll> arr(l+1);
        for (ll i = 1; i <= m; i++)
            {
                ll u, v;
                cin >> u >> v;
                for (ll j = u; u <= v; u++)
                    {
                        arr[u]++;
                    }
            }
        ll num = 0;
        for (ll &i: arr)
            {
                if (i == 0)
                    {
                        num++;
                    }
            }
        cout << num;
        return 0;
    }

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部