<考试题> codevs 5251 WYW的数字金字塔

数字金字塔的构造与计数
该博客主要介绍了如何根据给定条件构造数字金字塔,以及解决此类问题的暴力和动态规划(DP)两种解法。博主通过实例解析了输入输出描述,并给出了样例输入和输出。文章讨论了在不同测试数据下,可能的金字塔数量以及最高金字塔的高度。最后,提供了两种解决方案的代码实现。

*PS:原来暴力优化优化是可以过的么qwq,ljoj 数据手动测并没有T。。。最后默默的吐槽一句,附上一个金字塔的图是因为怕我们没有见过吗。。。

go to the problem

题目描述 Description

wyw有一个数字n,他要用这个数字写出一个数字金字塔。

wyw用随机数生成器生成了一个小于n且大于1的正整数k。

wyw找来一张白纸,他在白纸的最低端写下了这个数字n。

wyw在n的上面紧挨着写下了一个正整数a1,a1满足不大于n/k,

wyw又在a1上面写下了一个正整数a2,满足a2不大于a1/k,

时间过了t…

wyw在ah-1的上面写下了一个正整数ah,满足ah不大于ah-1/k

wyw已经无法在ah的上方写出不大于ah/k的数字了

这时,wyw就已经写好了一个高度为h(这里应该为h+1)的数字金字塔

wyw可以按照这个规则写出好多符合条件的数字金字塔。

试问:wyw一共能够写出多少种数字金字塔?wyw能写出的所有的数字金字塔中最高的金字塔的高度是多少?

注意:由于答案可能较大,所以对每一组数据请输出答案对p取模后的值。

输入描述 Input Description

输入数据的第一行包含两个正整数T、p,表示有T组测试数据,p的意义如题目所述

后面跟着T组数据,每组数据仅一行,包含了一个正整数n和k,意义如题目所述

输出描述 Output Description

输出数据一共n行,每行两个整数,表示答案对p取模后的值

样例输入 Sample Input

2 2

6 2

20 3

样例说明:以20 3这组数据为例,wyw能写出的所有金字塔如下

这里写图片描述

样例输出 Sample Output

1 1

1 1

数据范围及提示 Data Size & Hint

这里写图片描述

Solution 1 暴力

(codevs 上会T3个点,但手动测了测根本就没T 。。。qwq)

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;

long long T,k;
long long n=0,p,cnt;
int f[50000010];

int main()
{
    scanf("%lld%lld",&T,&p);
    while(T--)
    {
        scanf("%lld%lld",&n,&k);
        int z=n/k;
        f[0]=0;
        for(int i=1;i<=2*k-1;++i) f[i]=1;  // 2*k之前都只能放一个,只有一种方案。
        for(int i=2*k;i<=z+1;++i) f[i]=0;
        for(int i=2*k;i<=z;++i)  // 递推
            for(int j=i/k;j>=1;--j) 
               f[i]=(f[i]%p+f[j]%p)%p;
        for(int i=1;i<=z;++i) f[0]=(f[0]%p+f[i]%p)%p; //0存防止爆空间
        if(!f[0]) ++f[0]; // 只能放n也是一种方案
        printf("%lld ",f[0]%p);
        cnt=1;
        while(n/k)
        {
            n/=k;
            cnt=(cnt+1)%p;
        }
        printf("%lld\n",cnt);
    }
    return 0;
}

Solution 2 DP

代码

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;

long long T,P,n,k;
int S[500020];

int main()
{
    scanf("%lld%lld",&T,&P);
    S[0]=S[1]=1;
    while(T--)
    {
        scanf("%lld%lld",&n,&k);
        int N=n/k,ans2=1;
        for(int i=2;i<=N;++i)
          S[i]=(S[i-1]+S[i/k])%P;
        while(n/k) 
        {
            n/=k;
            ans2=(ans2+1)%P;
        }
        printf("%d %lld\n",S[N],ans2);
    }
    return 0;
}
/*
用数组s[i]表示以不大于i为底的数字所达到的方案数之和。
F[i]表示以某一数字(i)为底的方案数。
而F[i]恰好为s[i/k].
所以方程式为:s[i] = s[i–1] + f[i];  (类似前缀和)

PS:这里直接把f换成了s
*/
python export.py --weights yolov5s.pt --include onnx --opset 12 --img 640 --batch 1 A module that was compiled using NumPy 1.x cannot be run in NumPy 2.2.6 as it may crash. To support both 1.x and 2.x versions of NumPy, modules must be compiled with NumPy 2.0. Some module may need to rebuild instead e.g. with 'pybind11>=2.12'. If you are a user of the module, the easiest solution will be to downgrade to 'numpy<2' or try to upgrade the affected module. We expect that some modules will need time to support NumPy 2. Traceback (most recent call last): File "/home/wyw/yolov5/export.py", line 70, in <module> from models.experimental import attempt_load File "/home/wyw/yolov5/models/experimental.py", line 9, in <module> from ultralytics.utils.patches import torch_load File "/home/wyw/.local/lib/python3.10/site-packages/ultralytics/__init__.py", line 11, in <module> from ultralytics.models import NAS, RTDETR, SAM, YOLO, YOLOE, FastSAM, YOLOWorld File "/home/wyw/.local/lib/python3.10/site-packages/ultralytics/models/__init__.py", line 3, in <module> from .fastsam import FastSAM File "/home/wyw/.local/lib/python3.10/site-packages/ultralytics/models/fastsam/__init__.py", line 3, in <module> from .model import FastSAM File "/home/wyw/.local/lib/python3.10/site-packages/ultralytics/models/fastsam/model.py", line 6, in <module> from ultralytics.engine.model import Model File "/home/wyw/.local/lib/python3.10/site-packages/ultralytics/engine/model.py", line 11, in <module> from ultralytics.cfg import TASK2DATA, get_cfg, get_save_dir File "/home/wyw/.local/lib/python3.10/site-packages/ultralytics/cfg/__init__.py", line 11, in <module> from ultralytics.utils import ( File "/home/wyw/.local/lib/python3.10/site-packages/ultralytics/utils/__init__.py", line 22, in <module> import cv2 File "/home/wyw/.local/lib/python3.10/site-packages/cv2/__init__.py", line 181, in <module> bootstrap() File "/home/wyw/.local/lib/python3.10/site-packages/cv2/__init__.py", line 153, in bootstrap native_module = importlib.import_module("cv2") File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) AttributeError: _ARRAY_API not found Traceback (most recent call last): File "/home/wyw/yolov5/export.py", line 70, in <module> from models.experimental import attempt_load File "/home/wyw/yolov5/models/experimental.py", line 9, in <module> from ultralytics.utils.patches import torch_load File "/home/wyw/.local/lib/python3.10/site-packages/ultralytics/__init__.py", line 11, in <module> from ultralytics.models import NAS, RTDETR, SAM, YOLO, YOLOE, FastSAM, YOLOWorld File "/home/wyw/.local/lib/python3.10/site-packages/ultralytics/models/__init__.py", line 3, in <module> from .fastsam import FastSAM File "/home/wyw/.local/lib/python3.10/site-packages/ultralytics/models/fastsam/__init__.py", line 3, in <module> from .model import FastSAM File "/home/wyw/.local/lib/python3.10/site-packages/ultralytics/models/fastsam/model.py", line 6, in <module> from ultralytics.engine.model import Model File "/home/wyw/.local/lib/python3.10/site-packages/ultralytics/engine/model.py", line 11, in <module> from ultralytics.cfg import TASK2DATA, get_cfg, get_save_dir File "/home/wyw/.local/lib/python3.10/site-packages/ultralytics/cfg/__init__.py", line 11, in <module> from ultralytics.utils import ( File "/home/wyw/.local/lib/python3.10/site-packages/ultralytics/utils/__init__.py", line 22, in <module> import cv2 File "/home/wyw/.local/lib/python3.10/site-packages/cv2/__init__.py", line 181, in <module> bootstrap() File "/home/wyw/.local/lib/python3.10/site-packages/cv2/__init__.py", line 153, in bootstrap native_module = importlib.import_module("cv2") File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) ImportError: numpy.core.multiarray failed to import
09-02
<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://hand-esb-kfmic.kfmi.com/plmStandard/publish/types"><soapenv:Header></soapenv:Header><soapenv:Body><typ:Request><typ:esbInfo><typ:instId>6299f400-6a86-11ea-998b-5254000808a9</typ:instId><typ:requestTime>2025-11-05 09:47:35</typ:requestTime><typ:attr1></typ:attr1><typ:attr2></typ:attr2><typ:attr3></typ:attr3></typ:esbInfo><typ:requestInfo><typ:requestInfoLine><typ:FCompanyCode>33</typ:FCompanyCode><typ:FRequestFrom>PLM</typ:FRequestFrom><typ:FRequestObjClass>PLM-Normal</typ:FRequestObjClass><typ:FRequestObj>PLM2Material</typ:FRequestObj><typ:FRequestDatatype>JSON</typ:FRequestDatatype><typ:FRequestData>eyJJVEVNIjpbeyJGUmVxdWVzdEZyb20iOiJQTE0iLCJGQ29tcGFueUNvZGUiOiIzMyIsIkZDb21wYW55TmFtZSI6IuWugeazoua2puW5s+eUteWtkOadkOaWmeaciemZkOWFrOWPuCIsIkZNdGxQYXJlbnQiOiIwLjAyLjA2IiwiRk10bFBhcmVudENvZGUxIjoiMCIsIkZNdGxQYXJlbnRDb2RlMiI6IjAyIiwiRk10bFBhcmVudENvZGUzIjoiMDYiLCJGTXRsUGFyZW50Q29kZTQiOiIiLCJGTXRsUGFyZW50Q29kZTUiOiIiLCJGTXRsUGFyZW50Q29kZTYiOiIiLCJGTXRsUGFyZW50TmFtZTEiOiLljp/mnZDmlpkiLCJGTXRsUGFyZW50TmFtZTIiOiLovoXmnZAiLCJGTXRsUGFyZW50TmFtZTMiOiJBbCIsIkZNdGxQYXJlbnROYW1lNCI6IiIsIkZNdGxQYXJlbnROYW1lNSI6IiIsIkZNdGxQYXJlbnROYW1lNiI6IiIsIkZNdGxTaG9ydE51bWJlciI6IjAwMjA2MDg4OTQiLCJGTXRsTmFtZSI6IlpQUldDUy0wMDEiLCJGTXRsTW9kZWwiOiJQUFMiLCJGTXRsRXJwQ2xzSWQiOjIsIkZNdGxDaGFydE51bWJlciI6bnVsbCwiRk10bFZlcnNpb24iOiJSRVYuMCIsIkZDTCI6bnVsbCwiRkNEIjoiIiwiRkNGIjoiIiwiRlRtcENyYWZ0cyI6bnVsbCwiRlVuaXRHcm91cE5hbWUiOiLmlbDph4/nu4QiLCJGQmFzaWNVbml0TmFtZSI6IlBDUyIsIkZCYXNpY1VuaXRDb2RlIjoiMSIsIkZTYWxlVW5pdE5hbWUiOiJQQ1MiLCJGU2FsZVVuaXRDb2RlIjoiMSIsIkZQcm9kdWN0VW5pdE5hbWUiOiJQQ1MiLCJGUHJvZHVjdFVuaXRDb2RlIjoiMSIsIkZPcmRlclVuaXROYW1lIjoiUENTIiwiRk9yZGVyVW5pdENvZGUiOiIxIiwiRlN0b3JlVW5pdE5hbWUiOiJQQ1MiLCJGU3RvcmVVbml0Q29kZSI6IjEiLCJGSXNVc2VCYXRjaCI6MCwiRklzVXNlU2VyaWFsTnVtIjowLCJGTXRsVHlwZSI6IuWOn+adkOaWmSIsIkZQcm9kdWN0Q3ljbGUiOjAsIkZNYW51ZmFjdEluZm9WZXJzaW9uIjoiUkVWLjAiLCJGVmlld1ZlcnNpb24iOiJSRVYuMCIsIkZMYXN0TW9kZURhdGUiOiIyMDI1LTExLTA1IDA5OjQ3OjM1LjMwNSIsIkZJc0RlbGV0ZWQiOjAsIkZBY2N1cmFjeSI6NCwiRkhKIjpudWxsLCJGTXRsUHJpbnROYW1lIjoiWlBSV0NTLTAwMSIsIkZTSlpMIjoiMCIsIkZTdXBwbGllckNvZGUiOiIiLCJGU3VwcGxpZXJOYW1lIjoiIiwiRk1EIjoiMCIsIkZPYmpUeXBlIjoi6L6F5p2QIiwiRlNhcE10bE51bWJlciI6IjYxMDAwOTc2NDEifV19</typ:FRequestData></typ:requestInfoLine></typ:requestInfo></typ:Request></soapenv:Body></soapenv:Envelope>我应该怎么知道这个传递报文的具体含义呢?
最新发布
11-06
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值