[csp模拟2]T4——咕咕东的奇妙序列

2023-05-16

文章目录

  • 题意
    • Input
    • Output
    • 输入样例
    • 输出样例
    • 提示
  • 分析
  • 总结
  • 代码

题意

咕咕东 正在上可怕的复变函数,但对于稳拿A Plus的 咕咕东 来说,她早已不再听课,此时她在睡梦中
突然想到了一个奇怪的无限序列:112123123412345 …这个序列由连续正整数组成的若干部分构成,其
中第一部分包含1至1之间的所有数字,第二部分包含1至2之间的所有数字,第三部分包含1至3之间的所
有数字,第i部分总是包含1至i之间的所有数字。所以,这个序列的前56项会是11212312341234512345612345671234567812345678912345678910,其中第1项是1,第3项是2,第20项是
5,第38项是2,第56项是0。咕咕东 现在想知道第 k 项数字是多少!但是她睡醒之后发现老师讲的东西
已经听不懂了,因此她把这个任务交给了你。

Input

在这里插入图片描述

Output

在这里插入图片描述

输入样例

5
1
3
20
38
56

输出样例

1
2
5
2
0

提示

在这里插入图片描述
在这里插入图片描述


分析

这道题也不算很难,但是需要找到规律,这个过程可能会消耗一定时间,而且用代码实现规律的过程也不是很容易。现在还不太能做到在规定时间内做完第三题。


  • 序列的特征
  1. 初步分析

根据题意可知:

不考虑题目要求,仅观察这个序列,它的初步特征非常明显,就是将所有递增的小序列合并为一个大序列。

(1)(1 2)(1 2 3)…

其中,
第一个小序列为:1
第二个小序列为:1 2
第三个小序列为:1 2 3
而这三个序列在整个大序列中出现的次序分别为第1个、第2个、第3个。

由此推演不难发现:每个小序列都是从1开始,公差为1,项数等于小序列在大序列中出现的次序。而每个小序列中的数字个数同样也是等差的。

所以初步分析可得:题目所给序列满足每个小序列中的数为等差序列、每个小序列中的数字个数之间也为等差序列。

  1. 进一步分析小序列

但是,题目提到,在这个序列中每一项的序号并不是以数为单位,而是以单个数字为单位。

也就是说当出现多位数时,不是以一个数为单位,而是以一个单独的数字(0~9)为单位,所以这个数实际看作为它所包含的数字个数个。

例如,54 在这个序列中不算作出现的一项,而是以5和4视作出现了两项。

因此在这种方式下,我们自然要计算一下如何根据初步总结的数列特征来统计序列中实际包含的数字项数:

假设其中一个小序列,包含了1~无限大。显然无限大包含了从位数为1到无限大的数。
将相同位数的数放在同一个区间,我们可以发现:

19 	共包含 9 * 1 项数字
1099	共包含 90 * 2 项数字
100999 共包含 900 * 3 项数字
...

综上可以得到规律:

一个递增序列中,位数为a的区间里共包含 9 * 10^(a-1) * a 项数字

因此,前a位数区间里包含的数字项数就等于从位数1项数累加到位数为a 的区间。

  1. 进一步分析大序列

通过分析小序列中的位数区间,自然也会联想到大序列中的位数区间。

大序列的位数区间指的是在该区间内所有小序列的项数都为同样的位数,也可以理解为该区间内所有小序列中的最大数都为同样位数。

那么我们又该如何计算大序列中各区间的数字项数呢?

最开始会觉得这很麻烦,因为我们很难估计那么多小序列组成的区间。但是通过1、2点分析,可以发现这其中不无规律:

  • 小序列之间的联系

每个小序列中都会比前一个序列多一个数,且多出来的这个数——即当前小序列中的最大数——都比其前一个小序列的大1。那么在最开始就会自然想到每一个小序列的数字项数也比前一个小序列大1。

但实际上并不是,仔细一想会发现,这要取决于当前小序列比前一个序列多出来的这个数的位数。

考虑序列中的一段:

...1 2 3 4 5 6 7 8 9)(1 2 3 4 5 6 7 8 9 10...
第一个序列包含 9 项数字	
第二个序列包含 11项数字

...1 2 3 4 5 6 7 8 9 10)(1 2 3 4 5 6 7 8 9 10 11...
第一个序列包含 11 项数字	
第二个序列包含 13 项数字

...1 2...98 99)(1 2 ... 99 100...
第一个序列包含 9 + 90 * 2 = 189 项数字	
第二个序列包含189 + 3 = 192项数字

...

从上述例子中能感受到,当小序列中最大数的位数发生变化时,小序列包含数字项数所构成的等差序列的公差也会发生改变:

大序列的1位数区间(即区间中所有小序列的最大数都为1位数)
每个小序列所含数字项数构成的序列:
1 2 3 4 ... 	公差为1

大序列的2位数区间(即区间中所有小序列的最大数都为2位数)
每个小序列所含数字项数构成的序列:
11 13 15 17 ... 	公差为2

大序列的3位数区间(即区间中所有小序列的最大数都为3位数)
每个小序列所含数字项数构成的序列:
192 195 198 201 ... 	公差为3

...

显然每个位数区间都是从最大数为当前位数的最小数的小序列所包含的数字项数开始的,即为等差数列的首项。

大序列的1位数区间
第一个小序列为:1 
数字项数 = 1

大序列的2位数区间
第一个小序列为:1 2 3 4 5 6 7 8 9 10
数字项数 = 9 + 2 = 11

大序列的3位数区间
第一个小序列为:1 2 ....98 99 100
数字项数 = 9 + 90 * 2 + 3 = 192

...

即,位数为a区间的首项等于小序列中前a-1个位数区间的数字项数和+a。

综上,可得规律:

大序列中位数为a的区间中,所有小序列所包含的数字项数构成公差为a的等差数列。每个大序列位数a区间中的等差序列的首项等于小序列中前a-1个位数区间的数字项数和 + a。


  • 解题设计

将序列特征分析结束后,解题思路大致也可以想到。

如果我们能找到给定的项数包含在哪一个数内部,就很容易确定是这个数中的哪一个数字了。

但是大序列中有许多重复出现的数,所以我们得找到这个数具体是在哪一个小序列中。而每一个小序列中的一部分总会重复出现,所以又要进一步确定这个小序列到底是在大序列中的哪一段。

因此,根据反向思维整理可得:

已知目标数字x在大序列中的项数为m:

  • 确定x在大序列中的哪一个位数区间
  • 确定x在大序列位数区间中的哪一个小序列中
  • 确定x在小序列的哪一个位数区间中
  • 确定x在哪一个数中
  • 确定x在数的哪一位

根据以上步骤,从上至下逐步锁定m指向的数字x的位置。

1. 确定x在大序列中位数为a的区间

显然,项数为m的数字x被包含在大序列中第一个项数总数大于m的位数区间内。

为了优化搜索时间,我们可以用一个数组记录大序列中每一个位数区间的数字项数总数,方便比较。

2. 确定x在大序列位数a区间中的b小序列中

当确定了x在大序列中位数为a区间后,我们也就知道了这个区间中开头到任意一个小序列末尾包含的数字项数。

根据等差公式可以快速计算出最大项为n的小序列到区间起始所包含的数字项数总和。
在这里插入图片描述
n = 小序列最大项
a1 = 最大序列位数a区间第一个小序列的数字项数
d = 位数a

但项数m是指的x在整个大序列中的位置,此处我们需要知道x在这个位数区间中的位置。用m减去位数a区间之前的所有项数即可得到。

因此,
x在位数a区间中的项数m2 = m - 前a-1位数区间项数和

同样,第一个项数大于m2的小序列包含数字x,该小序列的最大项为b。

3. 确定x在小序列的位数c区间中

同理,用m2减去位数a区间内小序列b之前的项数得到数字x在这个小序列中的项数m3。

因此,
x在小序列中的项数m3 = m2 - 位数a区间内小序列b前的项数和

再根据小序列的各位数区间项数和来判定其属于小序列中的哪一个位数区间。

因为在实现过程中会多次用到小序列各位数区间的项数,为了减少计算时间,我用了一个数组存储小序列中所有位数区间的项数和。

同上,得到包含x的最小位数区间c。

4. 确定x来自于数y中以及其位数

当知道了x属于小序列中的位数c区间后,由于小序列是以1递增的整数序列,所以只要知道x在这个位数c区间内的位置,就能知道其所在数。

同理,
x在小序列位数区间c中项数m4 = m3 - 小序列前c-1位数区间项数和

此时范围已经缩减很小,只要稍作举例就能发现特征。

2位数区间:10 11 12 13..
1)每个2位数的个位的项数都可以整除位数2100为第2位、111为第4位、122为第6...
2)十位数的项数除以位数2的余数都为1

3位数区间:100 101 102 103..
1)每个3位数的个位的项数都可以整除位数3
2)十位数的项数除以位数3的余数都为2
3)百位数的项数除以位数3的余数都为1

...

根据举例证明,可以发现:

  • 当项数整除位数得到商k时,说明x为位数c区间中的第k个数y,且是y的个位。
  • 若无法整除,说明x为位数c区间中的第k+1个数y,且是y的个位,且在y中,x之前有(余数-位数)位数。

不过由于是从第1个开始算起,数y= 位数c的最小数+ 序号 - 1。


  • 优化&问题

  • 优化

当一出现在有序序列中进行查询时,就应该自然想到二分查找。因此在寻找大序列的位数区间,以及大序列位数区间中的小序列时,我都运用了二分。
二分法👉[week4]四个数列——二分法(巧用)

  • 如何确定本题所涉及的最高位数

这道题所给的数据范围很大,但是根据高斯数列,假设以所有数为单位计算项数时,当小序列中最大数为1e9时,所得项数已经接近最大数据了,因此显然在以数字为单位计算项数时,最大数为1e9已经满足题目数据范围。

不过需要注意的是,由于大序列的位数为9区间的项数非常大,如果不进行约束在vj上测试就会发生错误。所以只需要将大序列起始到这个区间末尾的项数和设置为题目所给最大数据即可。

  • 如何确定x位于数y的哪一位?

我最开始写的方法是将小序列中每个位数区间中的数字从第0个开始计算,以此再来求商和余,得到数y及x所在位数。

但是这样的方法从第6个点开始就会WA。但目前我还不清楚错在哪里😰但是它真的让我调试了太久,一直没想到是这里的问题。

  • 最开始的思路

最开始的思路并没有将确定x的位置细分到那么多层,而是直接通过在小序列项数和来一步确定x在哪一个小序列中。

若当前数组存储的最大项数和小于x的项数m,则从当前存储的最后一个小序列开始向后计算,直到找到第一个包含x的小序列。
反之,则在数组中二分查找第一个包含x的小序列。

之后的操作都和上面相同。

但是这个做法只能过前3个点,后来被逼疯了直接重写,但是我想这个方法本身应该也没有问题,可能是因为确定x来自的数y以及x在其中的位数这一部分,在最初写的这个方法里我仍然用的是从0开始计位。

  • 从0/1开始计数

这个问题在此类设计数据比较多的规律型问题时就比较敏感。在各种计算和推演中,从0和从1开始将会是完全不同的方法。


总结

  1. 一个小步骤调试了两天👍差点在电脑面前暴走

代码

//
//  main.cpp
//  lab3
//
//

#include <iostream>
using namespace std;

long long digit[10],digit2[10];
//记录序列起始到每个位数区间最末尾的序列总长度,如从1到9,1到99,此处序列是指题目所给的完整序列
//记录一个最简单序列中起始到每个位数区间最末尾的总长度,最简单序列是指单调递增序列12345...

long long powing(long long m,long long k)       //求m与10的k次方的乘积
{
    long long ans = m;
    
    if( k != 0 )
    {
        for( long long i = 0 ; i < k ; i++ )
            ans *= 10;
    }
    else
        return m;
    
    return ans;
}

int find1(long long n)                  //确认其所在的位数区间
{
    int left = 0,right = 10,dig = 0;
    
    //找到包含n的最小区间
    while( left <= right )
    {
        int mid = (left + right) >> 1;
        if( digit[mid] > n )        //若当前位数区间总长大于n,则n一定位于该区间之内,左分
        {
            dig = mid;              //记录答案
            right = mid - 1;
        }
        else if( digit[mid] < n )   //若当前位数区间总厂小于n,说明n在更大的位数区间内,右分
            left = mid + 1;
        else                        //如果n正好位于位数区间长度,停止二分
            return  mid;
        
    }
    return  dig;
}

long long find2(long long num,long long dig)         //确认其在位数区间中以哪一个数为最大数的序列中
{
    long long sum = 0,min = 0,start = 0,res = 0;

    start = powing(1, dig - 1);
    //得到这个位数的最小数
    
    min = digit2[dig - 1] + dig;
    //得到这个位数区间的第一个序列的长度
    //即为1到当前位数-1的最大数的数字个数再加上当前位数的最小数
    
    //左右指针分别为该位数中的最小数和最大数
    //找到位数区间中包含n的最小区间
    long long left = powing(1,dig - 1),right = powing(1, dig) - 1;
    while( left <= right )
    {
        long long mid = (left + right) >> 1;
        
        sum = (mid - start + 1) * min + (mid - start + 1) * (mid - start) / 2 * dig;
        //得到该位数区间起始到序列中最大数为中间数的区段序列长度
        //项数 = 最后一个序列的最大数 - 第一个序列的最大数 + 1 ; 项数差为位数
        //等差数列求和公式s=a1*n+n*(n-1)/2*d
        
//        cout<<mid<<" ** "<<sum<<endl;
        
        if( sum > num )     //若当前序列长度大于该数字在位数区间中的位置,则n一定位于当前最大数之内,左分
        {
            res = mid;          //记录当前序列中的最大数
            right = mid - 1;
        }
        else if( sum < num )        //否则,n一定在以更大数为最大数的序列之内,右分
            left = mid + 1;
        else                     //若n在位数区间中的位置恰好等于序列之长,直接返回该序列的最大数
            return mid;
    }
    return res;         //返回n所在序列中的最大数
}

int main()
{
    int q = 0;
    long long n = 0,max = 0,min = 0,num = 0,loc = 0,start = 0,site = 0,origin = 0,dig = 0;
    cin>>q;
    
    digit[0] = 0;
    digit2[0] = 0;
    
    for( long long i = 1 ; i <= 9 ; i++ )      //i表示当前计算区间最大数的位数
    {
        digit2[i] = digit2[i - 1] + i * powing(9,i - 1);
        //每个位数区间中的每个数都含有位数个数字
        //每个位数区间中数的个数有9乘以10的位数-1的次方个
        
        digit[i] = digit[i - 1] +  powing(9, i - 1) * (digit2[i - 1] + i) + powing(9, i - 1) * (powing(9, i - 1) - 1) / 2 * i;
        //每个位数区间的第一个序列的长度为上一个位数区间所有数的数字个数+当前位数
        //最后一个序列最大数一定为10的次方减1,如,个位数以9结束,二位数以99结束
        //因此每个区间中的项数都为9乘以10的位数-1的次方个,如,个位数共有9个,二位数共有90个..
        //而每个位数区间中每一个序列的长度都与其前一个序列长度相差位数个
        //因为区间中每一个序列都比前一个序列多一个相同位数的数,如,1、12,第二个序列就比第一序列多一个2
        //如,在个位数区间中,每个序列长度相差1,在二位数区间中,每个序列长度相差2
        //等差数列求和公式s=a1*n+n*(n-1)/2*d
        //所以,根据等差求和可以得到每个位数区间的长度
        //因此到每个位数区间最末尾的序列总长度就为当前位数区间的长度加上之前所有区间的长度
        
    }
    digit[9] = 1e18;        //如果根据等差计算得到的数据太大,让其大于数据所给的最大范围就可以
    
/*    for( int i = 1 ; i <= 9 ; i++ )
        cout<<digit[i]<<" | "<<digit2[i]<<" * ";
    cout<<" digit "<<endl;*/

    while ( q-- )
    {
        cin>>n;
        
        dig = find1(n);         //dig即为其所在位数区间
        
        num = n - digit[dig - 1];     //得到这个数字在这个位数区间内的位置(从1开始)
        
        max = find2(num, dig);      //max即为n所在序列的最大数
        
        start = powing(1, dig - 1);    //得到这个位数区间的第一个序列的最大数
        
        min = digit2[dig - 1] + dig;    //得到这个位数区间的最小序列长度
        
        loc = num - ((max - start) * min + (max - start) * (max - start - 1) / 2 * dig);
        //得到n在其所属的最小序列的位置(从1开始)
        //即用其在位数区间中的位置减去该区间起始到最大数为max-1的序列的长度
        //项数 = max - 1 - 第一个序列的最大数 + 1 ; 项数差为位数
        //等差数列求和公式s=a1*n+n*(n-1)/2*d
        
//        cout<<dig<<" dig "<<num<<" num "<<max<<" max "<<start<<" start "<<min<<" min "<<loc<<" loc "<<endl;
        
        if( loc < 10 )
            cout<<loc<<endl;
        else
        {
            long long j = 0;
            //求出n在其所在的最简单序列中属于哪个位数区间
            for( j = 1 ; j <= dig ; j++ )       //j表示位数,最大不会超过其所在大序列区间中的位数
           {
               if( digit2[j] > loc )   //如果当前长度大于loc,说明包含它的最小位数为j
               {
                   site = loc - digit2[j - 1];
                   break;
               }
               //减去起始到前一个位数区间的数字个数
               //即得到当前数字在最简单序列的位数区间中的位置序号(从1开始)
           }
            
//            cout<<site<<" site "<<j<<" dig "<<endl;
            
            long long k1 = site / j;        //得到n所属数中在其位数区间的位置(从0开始)
            long long k2 = site % j;        //得到n在所属数中的位置(从0开始,个位为0)
            
            if( k2 == 0 )       //若位于个位
            {
                //则说明所属数为位数区间最小数+区间位置-1
                //因为每个数的个位所在位置一定能整除位数,且商比原数实际位置大1,所以原数在的位置应该-1
                origin = powing(1, j - 1) + k1 - 1;
                cout<<origin % 10<<endl;        //输出个位
            }
            else            //否则,商即为原数在区间中的位置
            {
                origin = powing(1, j - 1) + k1; //原数即为区间位置+区间最小数
                long long k3 = j - k2;      //得到原数中比n小的位数个数
                origin = origin / powing(1, k3);    //去掉原数中比n小的位数,使得n为新的个位
                cout<<origin % 10<<endl;            //输出个位
            }
            
        }
        
    }
    
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[csp模拟2]T4——咕咕东的奇妙序列 的相关文章

  • 教你利用废旧电脑自制移动硬盘

    最近一直在看B站装机猿的视频 xff0c 便想着拿家里的坏电脑试试手就把主机拆了 xff0c 拆完后发现这台电脑的硬盘是一块15年产的1T的机械硬盘 xff0c 感觉挺新的就这样放着太浪费了 xff0c 就突发奇想能不能把硬盘改装成移动硬盘
  • Ubuntu Docker 开启2375端口 【手把手教程】

    背景 xff1a 为什么要开启2375端口 xff1f 开发环境下可以通过此端口直接向部署有Docker的那个服务器直接推送程序 什么情况下需要如此操作 xff1f 1 操作系统安装完Docker后 2 Ubuntu 系统升级Docker后
  • C++ 字符串char[]和string类

    C 43 43 字符串char 和string类 char strcpy s1 s2 strcat s1 s2 strlen s1 strcmp s1 s2 strchr s1 ch strstr s1 s2 string1 构造函数2 对
  • Rust 基础: 三方库依赖 & 自定义三方库

    Rust 基础 三方库依赖 amp 自定义三方库 文章目录 Rust 基础 三方库依赖 amp 自定义三方库正文1 项目类型2 引入官方三方库3 自定义三方库3 1 创建库项目3 2 加点内容3 3 引入自定义三方库 其他资源参考连接完整代
  • GPS模块的应用

    文章目录 GPS模块的应用前言数据格式代码解析数据读取部分数据解析部分数据打印错误提示初始化部分c内置函数的应用 GPS模块的应用 前言 买ATGM336H 5N这个模块 xff0c 主要是想在自己作的配送车上 xff0c 增加GPS模块
  • Rust: 基于 napi-rs 开发 Node.js 原生模块

    Rust 基于 napi rs 开发 Node js 原生模块 文章目录 Rust 基于 napi rs 开发 Node js 原生模块完整代码示例背景 amp napi环境 工具链准备创建项目打包 amp 测试参考链接 完整代码示例 ht
  • pip is configured with locations that require TLS/SSL, however the ssl modul

    安装anaconda3 xff0c 用pip安装库时出现问题 xff1a pip is configured with locations that require TLS SSL however the ssl modul 可以通过添加环
  • 定时任务

    每天晚上12点打包备份 etc 目录到 tmp下面 每天晚上12点打包备份 etc 目录到 backup 删除7天之前的备份 1 编写命令测试命令 root 64 oldboy backup touch t 0811142234 50 1
  • Python 多个网卡情况下,指定某特定网卡信息发送HTTP请求

    安装Python 第三方库 pip install netifaces pip install requests toolbelt 指定某特定网卡信息发送HTTP请求 xff0c 实际这里就是指定该特定网卡的IP地址 span class
  • docker mysql5.7中文乱码解决

    docker mysql5 7中文乱码解决 docker安装mysql5 7见文章docker安装mysql5 7 进入容器 docker exec it mysql5 7 docker bin bash 安装vim 更新包 apt upd
  • linux网络基础

    文章目录 前言1 网络通信概述2 网络设备概述3 应用层概述4 IP地址分类 xff08 IPv4 xff09 5 linux网络编程实践5 1 socket编程接口介绍5 2 IP地址格式转换函数实践5 3 服务器和客户端程序5 4 发送
  • sudo apt-get update 出现签名无效或者没有数字签名

    错误提示 获取 5 http packages ros org ros ubuntu bionic InRelease span class token punctuation span span class token number 4
  • 现代控制原理专业词汇中英文对照

    自动控制原理专业词汇中英文对照 xff08 一 xff09 自动控制原理专业词汇中英文对照 xff08 二 xff09 自动控制原理专业词汇中英文对照 xff08 三 xff09 中文英文状态state状态变量state variables
  • 自动控制原理专业词汇中英文对照(一)

    自动控制原理专业词汇中英文对照 xff08 二 xff09 自动控制原理专业词汇中英文对照 xff08 三 xff09 现代控制原理专业词汇中英文对照 中文英文自动控制automatic control cybernation自动控制系统a
  • 远程服务器上安装Anaconda并创建python环境、安装pytorch(Linux)

    实验室共用服务器 xff0c 所以需要在自己的文件夹下创建自己的环境 使用远程连接工具 xff1a mobaxterm 第一步 xff1a 官网下载Anaconda 官网 xff1a https www anaconda com distr
  • 使用vscode 的remote 远程连接华为云

    文章目录 使用vscode 的remote 远程连接华为云前言remote development免密码登录使用vscode 远程编写一个c函数 使用vscode 的remote 远程连接华为云 前言 博主前阵子 xff0c 买了个华为云的
  • python扫盲之self、join()和shape、dim

    目录 1 self2 join 3 张量的shape和dim 1 self self相当于全局变量 xff0c 如果某个变量会应用到不止一个函数中 xff0c 那就在 init 函数中定义带有self的变量 xff1b 相反 xff0c 如
  • (matlab)mat文件中的cell数据存到xls中-writematrix()

    mydata3 mat文件的数据结构是这样的 xff1a 其中的trajLU xff08 列名 xff09 是struct类型 xff0c 其中的数据是1 1的cell xff0c 每个cell里又是n 3的double数据 xff0c 说
  • python读取DataFrame的某行或某列

    常用操作 xff0c 记录一下防止忘记 span class token keyword import span numpy span class token keyword as span np span class token keyw
  • python numpy数组含逗号的切片

    普通切片操作 xff1a span class token builtin list span 名 span class token punctuation span 首 xff1a 尾 xff1a 步长 span class token

随机推荐

  • python多张子图画在一张画布上,显示图例和标题,并保存。

    1 分别画4个折线图子图 xff0c 并保存为svg格式 xff08 矢量图 xff0c 放大不模糊 xff09 x span class token operator 61 span span class token punctuatio
  • jupyter使用help函数查询函数功能

    写在前边 切记 xff1a 函数不要带小括号 xff01 xff01 先 import 对应的python库 xff01 xff01 span class token function import span xx help span cl
  • python 列表赋值给另一个列表不改变原列表(深拷贝和浅拷贝)

    先放结论 xff1a 要想列表复制给另一个列表不改变原列表 xff0c 应使用方法三深拷贝 列表内的数值是不可变类型 xff0c 列表内的列表是可变类型 a span class token operator 61 span span cl
  • Ubuntu 20.04 安装 tensorflow-gpu

    1 安装Anaconda3 1 1 下载安装包 wget P tmp https repo anaconda com archive Anaconda3 2020 02 Linux x86 64 sh 1 2 安装 bash tmp Ana
  • 实验3  数据库综合查询

    实验3 数据库综合查询 一 实验目的 掌握SELECT语句的基本语法和查询条件表示方法 xff1b 掌握查询条件种类和表示方法 xff1b 掌握连接查询的表示及使用 xff1b 掌握嵌套查询的表示及使用 xff1b 了解集合查询的表示及使用
  • Ubuntu18安装mysql8.0

    一 删除mysql 5 7 卸载 sudo apt get remove mysql common sudo apt get autoremove purge mysql server 5 7 清理残留数据 dpkg l grep rc a
  • 将arduino uno的数据上传到云平台

    文章目录 将arduino uno的数据上传到云平台解决方案adruino uno方面代码esp8266 方面代码主函数阿里云sdkcpp部分函数头部分 将arduino uno的数据上传到云平台 解决方案 加一块esp8266的单片机 x
  • 华为IS-IS基础配置

    目录 一 原理概述 二 实验要求 三 实验拓扑 四 实验步骤 一 原理概述 1 IS IS xff1a Intermediate System to Intermediate System xff0c 中间系统到中间系统 2 链路状态协议
  • 基于markdown-it打造的markdown编辑器

    前言 markdown it是一个用来解析markdown的库 xff0c 它可以将markdown编译为html xff0c 然后解析时markdown it会根据规则生成tokens xff0c 如果需要自定义 xff0c 就通过rul
  • WiFi模块ESP-07s开发过程(学习笔记)

    目录 注意事项获取AT指令用到的指令通过返回的指令提取自己想要的信息 注意事项 转义字符 xff1a xff1a C中定义了一些字母前加 34 34 来表示常见的那些不能显示的ASCII字符 xff0c 如 0 t n等 xff0c 就称为
  • Vue3 table表格使用axios调用后端Api数据,统一返回格式

    1 安装axios npm install axios 2 封装axios span class token keyword import span span class token namespace axios span span cl
  • 关于C++的string字符串拼接问题(和“字符转字符串”问题有关)

    xff08 只有气到我肺都炸了的情况下我才可能废一些时间去写博客 xff08 主要是写一些气话 xff09 xff0c 但现在气消得差不多了我也骂不出什么话了 正文 1 字符串拼接分软拼接和硬拼接 xff08 软硬拼接 是我自己发明的词 实
  • [week2]化学——识别烷烃基

    文章目录 题意InputOutput输入样例输出样例 分析总结代码 题意 化学很神奇 xff0c 以下是烷烃基 假设如上图 xff0c 这个烷烃基有6个原子和5个化学键 xff0c 6个原子分别标号1 6 xff0c 然后用一对数字 a b
  • [week2]模拟OJ成绩排名系统(简易版)

    文章目录 题意InputOutput输入样例输出样例 分析总结代码 题意 题面宛如小作文233 程序设计思维作业和实验使用的实时评测系统 xff0c 具有及时获得成绩排名的特点 xff0c 那它的功能是怎么实现的呢 xff1f 我们千辛万苦
  • [week3]区间选点问题——贪心算法

    目录 题意InputOutput输入样例输出样例 分析总结代码 题意 数轴上有 n 个闭区间 a i b i 取尽量少的点 xff0c 使得每个区间内都至少有一个点 xff08 不同区间内含的点可以是同一个 xff09 Input 第一行1
  • [week3]区间覆盖问题——贪心算法

    目录 题意InputOutput输入样例输出样例提示 分析总结代码 题意 数轴上有 n 1 lt 61 n lt 61 25000 个闭区间 ai bi xff0c 选择尽量少的区间覆盖一条指定线段 1 t xff08 1 lt 61 t
  • [csp模拟1]咕咕东的奇遇——(一)

    目录 题意InputOutput输入样例输出样例提示 分析总结代码 题意 咕咕东是个贪玩的孩子 xff0c 有一天 xff0c 他从上古遗迹中得到了一个神奇的圆环 这个圆环由字母表组成首尾相接的环 xff0c 环上有一个指针 xff0c 最
  • Linux挂载镜像的一些命令

    Linux挂载镜像的一些命令 在Linux中 xff0c 可以用losetup命令来设置无分区空白镜像到loop设备上 xff0c 用kpartx 来kpartx映射分区的镜像到loop设备上 之后通过mount命令将loop设备与系统文件
  • [week5]平衡字符串——尺取法

    目录 题意InputOutput输入样例输出样例提示 分析总结代码 题意 一个长度为 n 的字符串 s xff0c 其中仅包含 Q W E R 四种字符 如果四种字符在字符串中出现次数均为 n 4 xff0c 则其为一个平衡字符串 现可以将
  • [csp模拟2]T4——咕咕东的奇妙序列

    文章目录 题意InputOutput输入样例输出样例提示 分析总结代码 题意 咕咕东 正在上可怕的复变函数 xff0c 但对于稳拿A Plus的 咕咕东 来说 xff0c 她早已不再听课 xff0c 此时她在睡梦中 突然想到了一个奇怪的无限