poj2886线段树+反素数

python实现反向数,回文数,回文素数,反素数,梅森素数,双素数。 利用python3实现求一个数的反向数;判断一个数是否是回文数;判断是否是回文素数,反素数,梅森素数,双素数。 立即下载

8<---------------------------------------------------

题意:

N个小朋友围一圈。

指定一个人为起始点之后,此人出圈。

按照这个人手中卡片的数字找到下一个人,下一个人出圈。

。。。

直到最后一个人出圈。


8<--------------------------------------------

思路:

一:当期指定的人在第 K 个位置,他出圈后,找到下一个人在剩下的人中的位置 next_k。

	if(A >= 0) next_k = (k-1+A-1)%n + 1;
        else next_k = ((k-1+A)%n + n)%n + 1;

二:利用线段树树状数组求出接下来出圈的人原来的所在的位置。

以此可以求得第 P 个除圈的人。

三:题目描述最后一句说 F( x )为 x 的约数的个数。求这一组数的最大的 F(x),输出x, 以及相应的人名。

此处需要反素数表。

利用反素数相关知识,求出小于 N 的最大反素数 F(X), 得到X。

利用思路二可以求出第F(X)个出圈的人。

输出人名和x。


8<-------------------------------------------

刚开始不知道用到反素数,只暴力球了各个数的因子个数,无数个WA 和 超时, 错误百出。

搜了一下题解,用的反素数打表。

第一次接触反素数,了解了一下发现维基 和 百度说法不一。

不过总算知道是什么了。


啊, 第一次纯手写线段树不用看模板,脑海中的线段树模板有区间查询,这里是根据一个特定的值查询,稍微改了一下就好使了。

(呃。。。。我费了好长时间写这个查询啊……甚至还写了二级查询……慢慢调才搞出来简短的这个……当然代码里看不出来啦……弱弱仍需努力……)


8<---------------------------------------------


/*poj2886线段树*/
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;

#define lson l, m, rt<<1
#define rson m+1, r, rt<<1|1
#define maxn 500040

char str[maxn][10];
int A[maxn];
int sum[maxn<<2];
int n, k;

int operate(int a, int b){
    return a+b;
}

void PushUp(int rt){
    sum[rt] = operate(sum[rt<<1], sum[rt<<1|1]);
}

void build(int l, int r, int rt){
    if(l == r){
        sum[rt] = 1;
        return ;
    }
    int m = (l+r)>>1;
    build(lson);
    build(rson);
    PushUp(rt);
}

void Update(int p, int add, int l, int r, int rt){
    if(l == r){
        sum[rt] = add;
        return ;
    }
    int m = (l+r)>>1;
    if(p <= m) Update(p, add, lson);
    else if(p>m) Update(p, add, rson);
    PushUp(rt);
}

int Query(int k, int l, int r, int rt){
    if(l==r && k == 1 && sum[rt] == k){
        return l;
    }

    int m = (l+r)>>1;
    int ret = 0;
    if(sum[rt<<1] < k){
        ret =  Query(k-sum[rt<<1], rson);
    }else if(sum[rt<<1] >= k){
        ret = Query(k, lson);
    }

    return ret;
}

int main(){
    //freopen("in.txt", "r", stdin);
    int maxp_pos, maxp;

    int a[37]={1,2,4,6,12,24,36,48,60,120,180,240,360,720,840,1260,1680,2520,
        5040,7560,10080,15120,20160,25200,27720,45360,50400,55440,83160,110880,
        166320,221760,277200,332640,498960,500001};
    int b[37]={1,2,3,4,6,8,9,10,12,16,18,20,24,30,32,36,40,48,60,64,72,80,84,
        90,96,100,108,120,128,144,160,168,180,192,200,1314521};

    while(scanf("%d %d", &n, &k) != EOF){
        memset(sum, 0, sizeof(sum));
        for(int i=1; i<=n; i++){
            scanf("%s %d", str[i], &A[i]);
        }
        build(1, n, 1);

        int i=0;
        while(a[i] <= n)  i++;
        int p = a[i-1];
        maxp = b[i-1];

        int cnt = 1, next_k = k, tmp = k;
        int tmp_n = n;

        while(cnt<n){
            cnt++;
            Update(tmp, 0, 1, n, 1);
            tmp_n --;

            if(A[tmp]>=0) next_k = (next_k-1+A[tmp]-1)%tmp_n+1;
            else next_k = ((next_k-1+A[tmp])%tmp_n+tmp_n)%tmp_n + 1;
            tmp = Query(next_k, 1, n, 1);

            if(cnt == p) maxp_pos = tmp;
        }
        printf("%s %d\n", str[maxp_pos], maxp);
    }
    return 0;
}



ADI官方例程HDL和No-OS生成Vivado工程 这一步是选择下载源,一般都是选择国内镜像,因为国外的源太慢了,这里选择阿里的镜像,如果没有这个选项可以在下面的User URL里添加就行,选择好源后然后点击下一步。下一步会从你选择的源上下载软件包目录,如果提示Unable to get setup from https://xxxxxx/,返回上一步,选择别的源,例如第二个163网易的源。然后就是你想要安装在哪了,下面的选项好像会决定环境变量存放在哪,不过一般都是个人电脑选择第一个默认的就行,然后点下一步。下好之后双击打开,就是这个界面了,直接点下一步。 阅读详情

相关推荐

KiCad插件安装太慢?试试华秋版,再手把手教你装这5个实用插件

本文介绍了KiCad华秋发行版如何解决插件安装慢的问题,并详细推荐了5个实用插件及其安装方法。华秋版优化了国内用户的下载速度,预装了常用扩展包,包括BOM生成器、3D模型增强工具等,显著提升PCB设计效率。

weixin_29184075的博客 547

回文素数与反素数程序 python

反素数(逆向拼写的素数)是指一个将其逆向拼写后也是一个素数的非回文数。例如:13和31都是素数,且13和31都不是回文数,所以,13和31是反素数。 输入一个正整数n,请输出从小到大排列的的前n个反素数,数字后面以一个空格进行分隔。 import math def sushu(x): for i in range(2,int(math.sqrt(x))+1): if x%i == 0: return False return True ...

weixin_52478320的博客 1万+

数字IC后端手把手实战教程 | Innovus verify_drc VIA1 DRC Violation解析及脚本自动化修复方案

数字IC后端实战项目案例之Innovus verify_drc DRC Violation脚本自动化修复方案

weixin_37584728的博客 4049

Python 寻找反素数

最小的几个反素数为:13, 17, 31, 37, 71, 73, 79, 97, 107, 113, 149, 157, 167, 179, 199, ...‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬。编写程序,输入两个数m和n,要求n > m,输出m~n(包含m和n)之间所有的反素数,数之间用空格隔开。

weixin_64208729的博客 3843

Langfuse落地教程:从Docker部署到项目接入,掌控LLM调用链路

大模型应用开发中,调用链路的透明度直接决定调试效率与成本控制。可观测性技术通过记录每次请求的输入、输出、模型参数与Token消耗,帮助开发者快速定位问题。Langfuse作为开源LLM可观测性平台,将Trace、Prompt版本管理、评分等能力集成于一体,支持Docker Compose自托管部署,并提供Python/JS SDK与REST API。借助部署后的控制台,团队能够直观追踪RAG检索、Agent工具调用等复杂流程中的每一步耗时与资源占用,实现从黑盒调用到全链路可视化的转变。无论是本地调试、线上排

weixin_29698641的博客 308

西门子1200,与V90和步科MD60第三方伺服PN通讯

需要注意的是回零方式的选择,因为V90是绝对值编码器,这里回零模式选择模式7,系统自动根据编码器反馈以及组态的机械参数,计算出轴的位置,并且掉电保持。在线访问中,找到对应的网卡,以及下面扫描到的设备,可以在线修改ip地址和profinet名称,注意一定要和组态中的完全一致。以上硬件组态上完成,主要是gsd文件导入后,添加硬件,建立连接,修改ip和profinet名称,添加报文。1- 博图V18内,设备组态,网络视图中,拖入V90以及MD60伺服,并与PLC创建连接。向厂家索要GSD文件,PN的描述文件。

weixin_37596954的博客 2463

Python 2.7 | 反素数问题

反素数(逆向拼写的素数)是指一个将其逆向拼写后也是一个素数的数。例如:13和31都是素数,所以,13和31都是反素数。 题目: 给定一个正整数n(1 <= n <= 100), 请你输出从小到大排列的前n个反素数,数字间以空格进行分隔。 解题思路: 判断一个数是否是反素数,要先判断它是否是素数,若是再判断它的逆向拼写是否为素数。而对于2、3、7,他们是逆向拼写是本身,所以他们是反素数。每判断出一个,就把这个数加入结果数组result[ ]。 而题目中也规定是前n个反素数,可以引入一个计

fuzhi123456的博客 1万+

【Windows Server 2019】活动目录 (Active Directory) ——将计算机加入域和脱离域

博文介绍了如何将计算机加入AD域和脱离AD域,包括加入域,验证客户机加入到域后的信息,使用域账户用户在客户机上登录,使用本地账户用户在计算机上登录,脱离域。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 6169

Debian 9 LAMP实战搭建:Apache+MariaDB+PHP7.0全链路配置指南

LAMP是Linux、Apache、MySQL(或MariaDB)、PHP构成的经典Web服务栈,其核心在于四组件间的协议协同与权限联动。Apache作为HTTP守护进程需通过mod_php模块调用PHP解释器,PHP则依赖mysqli等扩展连接MariaDB,而Debian系发行版以APT包管理实现配置标准化与安全更新闭环。该技术栈广泛应用于WordPress、ThinkPHP等PHP应用部署,尤其适合中小型企业对稳定性、可维护性及长期安全支持(LTS)有明确要求的生产场景。本文聚焦Debian 9(St

dingdi3021的博客 506

FortiOS 存在身份验证绕过导致命令执行漏洞(CVE-2024-55591)

FortiOS 是 Fortinet 公司开发的操作系统,作为 Fortinet 安全平台的核心,提供全面的网络安全功能。 它将网络和安全功能无缝集成,支持跨本地、云、混合和融合 IT/OT/IoT 基础设施环境的统一管理。 FortiOS 7.6 版本引入了生成式人工智能助手、数据保护、托管服务和单一代理等新功能,进一步增强了其安全性和性能。

缘梦未来的博客 1841

把 MANDT 锁进保险箱:ABAP Client Handling 与 Client Isolation(聚焦 AMDP 的 Client Safety )

本文探讨了ABAP系统中Client Handling与Client Isolation机制的演进,重点分析了AMDP环境下多租户隔离的风险与解决方案。传统ABAP SQL/CDS通过隐式Client过滤提供安全保障,而AMDP因其原生SQLScript特性容易绕过隔离机制。文章对比了旧时代依赖开发自觉的传参方式与新时代通过AMDP OPTIONS强约束的语法方案,详细介绍了CLIENT INDEPENDENT和CDS SESSION CLIENT DEPENDENT两种编译期安全机制,阐述了USING列表

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 341

poj 2886 - 树状数组+二分

题解思路: 这里我们可以将逆时针一同转化为顺时针,那么就是如果逆时针跳过m个人那么顺时针应该是k(圈里现有人数)-m+1,为什么要加1呢,因为我们出发点是上一次被淘汰的那个人,他已经不属于这个圈子了,所以转化成顺时针要多加1,那么我们假设刚刚被淘汰的人在po位置,那么无非是两种情况:下个被淘汰的在po-n中或1-po中,如果po-n中的人数不够的话那肯定就在1-po中,这个可以用树状数组维护,另

过路人丶的博客 471

http协议

HTTP 协议由起始行、头部、空行、消息体组成。

qq_34059233的博客 89

POJ 2886 【线段树&&反素数&&约瑟夫循环】

POJ 2886 【线段树&&反素数&&约瑟夫循环】 题目链接 题意:给你n,k<=5e5,n是人数下面还会给你n个人的信息,k是初始位置,每次都会根据当前的位置大于0决定顺时针走a[i],否则就走逆时针a[i],循环的次数就是小于n的因子最大的那个。题意是这样 思路: 1.首先要确定循环次数,暴力找5e5以内因子数最大的那个n*sqrt(n),加上多组肯定超...

qq_43653111的博客 218

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

poj 2886 Who Gets the Most Candies?(线段树、反素数)

poj 2886 Who Gets the Most Candies? 此题线段树的思路倒是没什么问题,关键在于求

yjCola 592

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

POJ2886 Who Gets the Most Candies?(反素数+线段树模拟约瑟夫环)

传送门:http://poj.org/problem?id=2886 这题真是太厉害了。。 我们要先知道反素数:对于任何正整数x,其约数的个数记做g(x).例如g(1)=1,g(6)=4.如果某个正整数x满足:对于任意i(0if(val[pos]>0){ k=(((k-1+val[pos]-1)%mod)+mod)%mod+1; //k-1表示去掉本身,val[pos]-1在后面

xtttgo的博客 337

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

poj 2886 线段树+反素数

Who Gets the Most Candies? Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 12744   Accepted: 3968 Case Time Limit: 2000MS Description N children are si

阳光下的泡沫 524

poj 2886(线段树+反素数)

#include #include #include #define lson L , m , rt << 1 #define rson m + 1 , R , rt << 1 | 1 using namespace std; const int maxn = 520000; struct Node { int L,R; int sum; }tree[maxn*4]; in

Weiguang_123的专栏 2031

poj 2886 (线段树+反素数打表) Who Gets the Most Candies?

http://poj.org/problem?id=2886 一群孩子从编号1到n按顺时针的方向围成一个圆,每个孩子手中卡片上有一个数字,首先是编号为k的孩子出去,如果他手上的数字m是正数,那么从他左边(顺时针)开始第m个孩子出去,如果是负的 那么从他的右边(也就是逆时针)开始第m个孩子出去~~~一直到所有的孩子出去,另外,第p个出去的孩子可以得到的糖果数量是p的约数个数,问能得到最多糖果的孩...

weixin_30248399的博客 104

线段树 + 反素数 poj2886

关于反素数:摘自此博客:http://magicode.blog.sohu.com/120450550.html 这个题主要用到线段树的思想,每次推算出要出去的人在当前剩下的人中的排位,再用线段树求出其原来的编号,即可算出每次应该出去的人,该人得到的糖果数为f(p)(p为出去的顺序,f(p)为p约数的个数 其实当总人数n确定时,p的值和f(p)的值就确定了,p为小于等于n的最大反素

1223

POJ 2886 反素数+线段树

题意: N个人进行约瑟夫环游戏第i轮的人能获得p(i)个糖果求获得最多糖果的人和糖果数 p(i)为数i的因子的个数 分析: 约瑟夫环可以用线段树模拟下一次出局的人(因为每一次出局一个人所有的人的下标都回改变) 知识点:反素数对于任何正整数x,其约数的个数记做g(x).例如g(1)=1,g(6)=4.如果某个正整数x满足:对于任意i(0 因为我们要求的是最大的p(i)1 ACcode:

MY Blog 578

poj2886反素数与线段树

////思路就是给定一个确定的N,约数最大的P是确定的就是不大于N的最大反素数,所以可以打表 //然后用一个线段树记录空位模拟出队的过程,找出第P次出队人的编号。线段树的区间存的为编号1~N的人在队 // 中的人数,update(t,val)就是更新线段树让第val个立刻,并求出他的编号。 // 当出队人对应的card值为正时,下一个val就算 (val-1+card-1)%p+1 p为此人

hhy518518的专栏 406

POJ 2886 线段树 反素数

先看看反素数 反素数的定义:对于任何正整数,其约数个数记为,例如,如果某个正整数满足:对任意的正整 数,都有,那么称为反素数。   从反素数的定义中可以看出两个性质: (1)一个反素数的所有质因子必然是从2开始的连续若干个质数,因为反素数是保证约数个数为的这个数尽量小 (2)同样的道理,如果,那么必有 根据这两个性质递归求解 线段树模拟叶子节点表示区间剩余的人...

weixin_33816300的博客 71

poj2886 线段树+反素数

#include #include #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #define max 500010 int sum[max<<2]; char Name[max][20]; int num[max]; int Max_fprime[max]; int Max_num[max]; int N,K; void get_fpri

wahaha1_的专栏 626

poj 2886 线段树 (用反素数)

题意:有n 个人,每个人有一个卡,上面有一个非零的数。第一次给一个数k,第k个人跳出,然后看第k的卡上数字是多少,如果大于0 则顺时针数那人人跳出。小于零,逆时针数到的那个人跳出,一次类推,第x次跳出的人会得到f(x),f(x)等于x的因子个数,求最大的f(x) f(x)满足反素数。 线段树的区间存的是有多少人。 #include #include #include using namespa

Time is up , let's go . 707
上一篇: Win7下安装配置PHP + MySQL + Apache 日志
下一篇: 打素数表?
monkey7777
博客等级 码龄15年 55粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值