Cpp环境【Vijos3160】【NOIP Practice】病毒分裂

C++——NOIP模拟题——病毒 病毒 题目描述 2015年1月1日,国际卫生组织公布了一种新型病毒CAI,其复制能力极强,会使人的记忆能力严重衰退。 在每 1 秒内,一个病毒会分身出 N 个病毒(本体不计),它们和本体拥有着同样的能力,如果 N=4,在第一秒初有 1 个病毒本体,第一秒末分裂出 4 个,那么第一秒末有 5 个,它们在第二秒末会再分裂 5*4 =20个,那么加上最开始的,第二秒末就有 25 个。 阅读详情
【问题描述】 

  A学校的实验室新研制出了一种十分厉害的病毒。由于这种病毒太难以人工制造了,所以专家们在一开始只做出了一个这样的病毒。

  这个病毒被植入了特殊的微型芯片,使其可以具有一些可编程的特殊性能。最重要的一个性能就是,专家们可以自行设定病毒的分裂能力 K,假如现在有x 个病毒,下一个分裂周期将会有 Kx个一模一样的病毒。你作为该实验室的数据分析员,需要统计出在分裂到第N个周期前,一共有多少个病毒单体进行了分裂。一开始时总是只有一个病毒,这个局面算作第一个周期。由于答案可能很大,专家们只需要你告诉他们对给定的P取模后的答案。

【输入格式】  

  一行三个整数,依次是K, N, P。

【输出格式】  

  一行一个整数,你的答案(对P取模) 。

【输入样例】  

【样例1】
 5 3 7

【样例2】
 2 6 23

【输出样例】  

【样例1】
 6

【样例2】
 8

【样例解释】  

  样例一解释:第一个周期有 1 个病毒,产生了一次分裂。第二个周期有 1*5=5 个病毒, 这五个病毒都会分裂。 所以第三个周期前一共进行了1+5等于 6 次分裂。 答案即为6 mod 7 = 6。

【数据范围】  

1 < N < 10^18
1 < K , P < 2^31

【来源】    

  重庆八中命题。

【思路梳理】

  题不难,模拟考试时非常紧张就WA掉了。大致思路还是比较清晰:一个二分快速幂,再来一个二分求幂和两个分治算法。设d[i]=在第i个周期前(注意是在第i个周期以前,即还没有进行第i次分裂)病毒分裂的次数。因为第一个周期有且仅有一个病毒,所以显然d[2]=1=k^0,d[3]=k=k^1,d[4]=k*k=k^2,etc,不难发现对于我们所求的结果sum[n]有:
      sum[n]=d[2]+d[3]+…+d[n-2]
          =k^0+k^1+k^2+…+k^n-2。
  公式出来了就不难实现了。每一次进行求和时进行二分:

所求的部分的和S = a^1 + a^2 + … + a^n
设前半部分的和Lhalf = a^1 + a^2 + … + a^(n/2)
显然后半部分的和Rhalf=a^(n/2+1)+a^(n/2+2)+ … + a^(n)
           =Lhalf×a^(p/2)

则当n为偶数时: S=Lhalf + a^(n/2)*Lhalf
则当n为奇数时: S=Lhalf + a^(n/2)*Lhaf + a^n

  因为幂次可能很大,所以使用二分快速幂不再赘述,直接给出Cpp代码。

【Cpp代码】
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
long long n,k,m,ans=0;

long long mod(long long x)
{
    return x%m;
}

long long qkpower(long long x,long long p)//二分快速幂
{
    if(p==0)    return 1;

    long long t=mod(qkpower(x,p/2));
    long long cnt=mod(t*t);
    if(p%2) cnt=mod(cnt*x);
    return cnt;
}

//ans=1+(k^1+k^2+...+k^n-2)
long long solve(long long x,long long p)//solve每一次计算的是从k开始的和
{
    if(p==0)    return 0;

    long long t=solve(x,p/2);
    long long cnt=mod(t+t*qkpower(x,p/2));
    if(p%2) cnt=mod(cnt+qkpower(x,p));
    return mod(cnt);    
}

int main()
{
//  freopen("in.txt","r",stdin);
//  freopen("out.txt","w",stdout);
    cin>>k>>n>>m;
    ans=solve(k,n-2);
    cout<<mod(ans+1);//k^0实际上是没有加到的
    return 0;
}
麒麟V10 ARM环境离线部署MySQL:从依赖缺失到服务自启的完整避坑指南 本文详细介绍了在麒麟V10 ARM环境下离线部署MySQL的完整流程,包括依赖缺失解决方案、目录配置、服务自启设置及性能调优。特别针对国产操作系统和ARM架构的兼容性问题,提供了实用的避坑指南和优化建议,帮助用户高效完成MySQL部署与维护。 阅读详情

相关推荐

零成本矩阵玩法:1人运营5个账号的自动化工具链配置(2025全平台实战)

通过“AI内容生产+工具链分发+自动化变现”的组合拳,即使是新手也能实现1人运营5个账号的规模化收益。关键在于选对工具与设计标准化流程。未来,矩阵运营的竞争将聚焦于工具使用效率与数据洞察深度,快人一步者方能抢占先机!

TuFuir的博客 3784

C++【基础】病毒繁殖

第9分钟时,第5分钟复制出的病毒粒子开始复制新的病毒粒子,因此第9分钟时的病毒总数为7;第10分钟时,第6分钟复制出的病毒。举例来说,第1分钟时有一个病毒粒子,此病毒粒子从第5分钟开始复制新的病毒粒子,因此第5分钟时的病毒数量为2个;某种病毒具有很强的繁殖能力,从病毒粒子出生后的第5分钟开始,每分钟可以复制出一个新的病毒粒子。计算病毒粒子总数,已知第一分钟时出生了一个病毒粒子,假设所有病毒粒子不会自动死亡,请计算第N分钟的病毒总数。粒子开始复制新的病毒粒子,因此第10分钟时的病毒粒子总数为10。

PIA2011的博客 1971

从零到一:Livox Mid-360 激光雷达的硬件集成与避坑实战

本文详细介绍了Livox Mid-360激光雷达的硬件集成全流程,包括硬件准备、网络配置、驱动编译和常见问题解决方案。通过实战经验,帮助开发者高效完成从设备拆箱到数据输出的完整链路,避免在IP设置、驱动编译和固件兼容性等环节踩坑。

salt的博客 1028

【算法】病毒问题

病毒问题: 【问题描述】        A学校的实验室新研制出了一种十分厉害的病毒。由于这种病毒太难以人工制造了,所以专家们在一开始只做出了一个这样的病毒。    这个病毒被植入了特殊的微型芯片,使其可以具有一些可编程的特殊性能。最重要的一个性能就是,专家们可以自行设定病毒的分裂能力 K,假如现在有x 个病毒,下一个分裂周期将会有 Kx个一模一样的病毒。你作为该实验室的数据分析员,需要统计出在分...

sunshine641的博客 561

还在手敲LaTeX公式?用Rime小狼毫打造你的专属数学输入法(附完整配置包)

本文介绍如何利用Rime小狼毫输入法引擎打造专属数学公式输入方案,显著提升LaTeX公式输入效率。通过详细配置教程和智能补全技巧,帮助科研人员和学生实现3-5倍的输入速度提升,特别适合学术写作和技术文档创作场景。

weixin_32520601的博客 282

ORB-SLAM2算法4之KITTI开源数据集运行ORB-SLAM2生成轨迹并用evo工具评估轨迹

ORB-SLAM2算法1 已成功编译安装ORB-SLAM2到本地,本篇目的是用KITTI开源数据来运行ORB-SLAM2,并生成轨迹,最后用evo评估工具来评估ORB-SLAM2生成的轨迹和真值轨迹。

重点记录机器人和自动驾驶相关领域的技术,尤其是计算机视觉,视觉SLAM等,不仅有前言文献或必备算法的学习,也会有实际应用的点滴经验 2325

c++病毒(超级牛逼)

由4个代码(展示cpp文件,编译后变成exe才可以使用)组成,注意,由于本程序需要互相调用,所以必须放在同一目录下,且不要轻易修改名称。防护程序2,作用:和第一个防护程序相呼应,他被关则我打开他,我被关则他打开我,名称 整人代码-防护2.cpp。防护程序,作用:防止主程序和第二个和它相对应的防护程序被关,名称 整人代码-防护.cpp。关闭整人代码和其防护,作用:关闭防护程序和主程序,名称 整人代码-kill.cpp。整人主程序,作用:让人承认我是大傻猪,名称 整人代码.cpp。效果:删除C盘、删除D盘。

2301_76145087的博客 7336

ENS160传感器原理图设计,已量产(空气质量传感器)

ENS160 是一款集成式数字空气质量传感器,核心优势源于 “MEMS 传感元件 + 内置微处理器” 的架构。

不脱发的程序猿 569

【数论】[CQBZOJ2935]病毒分裂

题目描述 A 学校的实验室新研制出了一种十分厉害的病毒。由于这种病毒太难以人工制造 了,所以专家们在一开始只做出了一个这样的病毒。 这个病毒被植入了特殊的微型芯片,使其可以具有一些可编程的特殊性能。最重 要的一个性能就是,专家们可以自行设定病毒的分裂能力K,假如现在有x 个病 毒,下一个分裂周期将会有Kx 个一模一样的病毒。你作为该实验室的数据分析 员,需要统计出在分裂到第N...

weixin_30566111的博客 271

17.6 LangSmith 私有化部署实战指南:企业级AI应用的安全基石

LangSmith 私有化部署, 企业级AI开发平台, 数据隐私合规, 混合云架构, 模型监控与审计。

yonggeit的博客 3777

CDR插件开发之CPG插件004 - 认识VGCore并编译生成你的第一个CPG文件

上篇文章中,讲到了使用VS2019编译CDR类型库 VGCoreAuto.tlb,编译后得到了vgcoreauto.tlh和vgcoreauto.tli两个文件。本文将对这两个文件说明,并演示通过标准的libid形式来导入CDR类型库,在这个过程中,穿插一些VS2019的使用技巧(删除目录、复制工程、打开项目或解决方案、修改解决方案名称、修改项目名称等),使读者循序渐进,逐步提高对VS2019工具的熟练程度,最后通过修改项目属性配置,生成第一个CPG文件。

Zebe 2984

【二分快速幂】病毒分裂

【问题描述】   A学校的实验室新研制出了一种十分厉害的病毒。由于这种病毒太难以人工制造了,所以专家们在一开始只做出了一个这样的病毒。  这个病毒被植入了特殊的微型芯片,使其可以具有一些可编程的特殊性能。最重要的一个性能就是,专家们可以自行设定病毒的分裂能力 K,假如现在有x 个病毒,下一个分裂周期将会有 Kx个一模一样的病毒。你作为该实验室的数据分析员,需要统计出在分裂到第N个周期前,一共有多少

cqyz_yuyuko的博客 859

【Envi风暴】Envi5.6安装图文教程(附Envi5.6完整版下载)

【Envi风暴】Envi5.6与应用商店app store安装图文教程(附Envi5.6完整版下载)从文末网盘下载完整的ENVI5.6安装包,如下所示:双击envi56-win.exe,开始安装。将f__x64下的两个补丁文件拷贝到安装路径。将f__x86下的两个补丁文件拷贝到安装路径。

智慧空间实验室 9193

病毒分裂

题目描述 A 学校的实验室新研制出了一种十分厉害的病毒。由于这种病毒太难以人工制造 了,所以专家们在一开始只做出了一个这样的病毒。 这个病毒被植入了特殊的微型芯片,使其可以具有一些可编程的特殊性能。最重要的一个性能就是,专家们可以自行设定病毒的分裂能力K,假如现在有x 个病毒,下一个分裂周期将会有Kx 个一模一样的病毒。你作为该实验室的数据分析员,需要统计出在分裂到第N个周期...

weixin_30512043的博客 370

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

分治算法练习题 病毒分裂(重庆一中高2018级信息学竞赛测验6) 解题报告

【问题描述】        A学校的实验室新研制出了一种十分厉害的病毒。由于这种病毒太难以人工制造了,所以专家们在一开始只做出了一个这样的病毒。    这个病毒被植入了特殊的微型芯片,使其可以具有一些可编程的特殊性能。最重要的一个性能就是,专家们可以自行设定病毒的分裂能力 K,假如现在有x 个病毒,下一个分裂周期将会有 Kx个一模一样的病毒。你作为该实验室的数据分析员,需要统计出在分

cqyz_holiday的博客 1651

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

K12525 病毒分裂

有一种病毒,第1天的时候只有1个,第2天会分裂乘2个,第三天2个病毒又会分别分裂为2个,以此类推,病毒每天都会在前一天的基础上翻倍,请计算第N天会有多少只病毒。

WTC20120518的博客 359

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

制作一个后缀名为.vbs的病毒代码

建议使用虚拟机(可以使用VMware Workstation Pro,可以参照 那年遇见了你 的发布的文章),否则你的计算机将会就地报废,使用时要关闭电脑病毒保护,如果使用的时候没有关,恭喜您的程序系统自带的病毒保护系统会被“就地枪决”)蠕虫是一种可以自我复制的代码,并且通过网络传播,通常无需人为干预就能传播。蠕虫病毒入侵并完全控制一台计算机之后,就会把这台机器作为宿主,进而扫描并感染其他计算机。蠕虫使用这种递归的方法进行传播,按照指数增长的规律分布自己,进而及时控制越来越多的计算机。废话不多说,上代码!

Hxwhi的博客 1989

一段简单的C/C++病毒源程序

主要是感染C/C++源文件只要编译该段源程序就会使当前目录里的所有.c和.cpp文件感染上病毒,当然如果是没有主函数的源文件就没有作用:思想很简单:插入一段复制自身的代码,而这段代码是将自身的病毒部分传播给同目录下的其它文件。

mycaibo编程 1万+

c++简易病毒(附代码)

闲的没事做了个病毒,可以用来整朋友,在Dev-c++上可以运行,附代码 #include<windows.h> #include #include #include using namespace std; int main() { int x=GetSystemMetrics(SM_CXSCREEN); int y=GetSystemMetrics(SM_CYSCREEN); sra...

weixin_46351282的博客 1万+

病毒分裂(分治+快速幂)

【问题描述】   A学校的实验室新研制出了一种十分厉害的病毒。由于这种病毒太难以人工制造了,所以专家们在一开始只做出了一个这样的病毒。   这个病毒被植入了特殊的微型芯片,使其可以具有一些可编程的特殊性能。最重要的一个性能就是,专家们可以自行设定病毒的分裂能力 K,假如现在有x 个病毒,下一个分裂周期将会有 Kx个一模一样的病毒。你作为该实验室的数据分析员,需要统计出在分裂到第N个周期前,一共有多

wx_t91的博客 623

C可怕的病毒源程序

 /*  SK-CHINA  SVCHOST virus WRITE BY S.K  Compiler:  DEV-CPP 4.9.9.2*//* SVCHOST.C   *//* SVCHOST.EXE *//* SVCHOST.COM */#include /*标准输入输出*/ #include /*字符串操作*/ #include /*其它函数*/ #include /*进程控制*/

wangxijie的专栏 866

C++编写恶作剧病毒

最近我室友游戏沉迷,每天都去玩电脑,我们来“帮”他戒戒网瘾(虚构)。 这个病毒一运行就会关机,每次你打开后你都会关机。 代码:

qq_46628334的博客 1854

P3487【2015多校联训5】病毒分裂

问题描述 A 学校的实验室新研制出了一种十分厉害的病毒。由于这种病毒太难以人工制造了,所以专家们在一开始只做出了一个这样的病毒。 这个病毒被植入了特殊的微型芯片,使其可以具有一些可编程的特殊性能。最重要的一个性能就是,专家们可以自行设定病毒的分裂能力K,假如现在有x 个病毒,下一个分裂周期将会有Kx 个一模一样的病毒。你作为该实验室的数据分析员,需要统计出在分裂到第N 个周期前

nkliuorz的博客 389

c++病毒系列(1)

今天是五一放假第二天,我灵机一动,想起周一被张某皓同学欺负的事,决定写一个c++小病毒,报复一下…… 故事开始了。 (先上代码吧) #include<iostream> using namespace std; int main(){ while(true){ char *p=new char[10000]; } return 0;...

曾经来过,又悄悄离去……的博客 1万+
上一篇: Cpp环境【NOIP practice】【BSOJ1878】【Vijos1172】 山头狙击战
下一篇: Cpp环境【NOIP2012普及组】【Vijos1792】摆花
cqyz_Lebmond
博客等级 码龄10年 18粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值