首页 > 其他分享 >快速次幂

快速次幂

时间:2024-03-18 15:11:44浏览次数:12  
标签:xi int ++ mul2 快速 翻倍 mod

题目:
拿到一个数组,每次操作会将除了第x个元素之外的元素都翻倍,一共操作q次,求操作结束后所有元素之和

int main() {
    int n, q, xi;
    const long long mod = 1e9 + 7;
    cin >> n >> q;
    vector<long long> a(n);
    vector<long long> mul2(q, 2);
    unordered_map<int, int> notmul;
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    //构建快速二次幂
    for (int i = 1; i < q; i++) {
        mul2[i] = mul2[i-1] * 2 % mod;
    }
    for (int i = 0; i < q; i++) {;
        cin >> xi;
        notmul[xi - 1]++;
    }
    int ans = 0;
    for (int i = 0; i < n; i++) {
        int tmp = a[i] * mul2[q - 1 - notmul[i]] % mod;  //每个元素乘以对应的倍数(mul2[q-1]表示翻倍了q次,减去没有被翻倍的次数得到实际被翻倍次数)
        ans += tmp;
    }
    cout << ans << endl;
}

标签:xi,int,++,mul2,快速,翻倍,mod
From: https://www.cnblogs.com/fly-smart/p/18080448

相关文章

  • Linux网络抓包工具Tcpdump的3分钟快速入门手册
     Tcpdump概述tcpdump是一款强大的网络抓包工具,运行在Linux平台上。它可以帮助你分析、调试网络数据。要很好地掌握tcpdump,需要对网络报文(TCP/IP协议)有一定的了解。但对于简单的使用来说,只要有网络基础概念就足够了。此外,Tcpdump允许用户拦截和显示发送或收到过网络连接......
  • 云原生最佳实践系列 1:如何快速实现kafka性能压测
    消息队列Kafka版实例类型的性能表现除了跟实例本身的规格相关外,与创建实例时选择的云盘类型也强相关,本实验通过相同规格的实例,不同的云盘类型来验证该因素的影响。消息队列KafkaServerless版本身实例未提供具体的云盘类型来选择,其性能表现只与购买实例时预留的写入、读取的......
  • 算法-快速排序
    分土地问题你有一块1680*640的土地,你要将它均匀分成方块,并让方块尽可能大。根据“欧几里得算法(求最大公约数)”,知使用于这块小土地的最大方块,也就是适用于整块地的最大方块(相当于求1680和640的最大公约数)。可以按照如下方式分土地:←水平16.80cm,竖直6.40cm→第一次分......
  • Android第一行代码——快速入门 Kotlin 编程(2.5 面向对象编程)
    目录2.5    面向对象编程2.5.1    类与对象2.5.2    继承与构造函数2.5.3    接口2.5.4    数据类与单列类2.5    面向对象编程        和很多现代高级语言一样,Kotlin也是面向对象的,因此理解什么是面向对......
  • 前端快速处理几十万条数据的方式?
    在前端处理大量数据时,可以采用以下几种方式来提高处理速度和性能:数据分页:将数据分成多个页面,并按需加载。只加载当前页面的数据,而不是一次性加载全部数据。这可以减少初始加载时间和内存占用,并提高用户体验。虚拟滚动:对于需要展示大量列表或表格数据的情况,可以使用虚......
  • 中考英语首字母快速突破009-2021上海闵行英语二模-Preventing and Managing Stomach F
    PDF格式公众号回复关键字:ZKSZM009原文​Stomachfluisacommondisease.Itspreadseasily,whichmakesithardtoavoid.That'se(71)trueifsomeoneinyourfamilyhasit.Stomachfluiscausedbyavirus,butnotthesameonethatcausesregular......
  • Vue — Vue3.0快速掌握
    一.使用create-vue创建项目1.环境条件node版本在16.0以上2.创建vue3.0应用npminitvue@latest//创建npminstall//下载依赖3.项目目录和关键文件1.vite.config.js:项目的配置文件基于vite的配置2.package.接送:项目包文件核心依赖变成了Vue3.X和vite3.main.js:入......
  • 网络安全快速入门(四) python基础
    4.1初识python我们在前面已经了解了批处理和控制台命令,但这类语言输入显得过于复杂,并且需要注意的事项有很多。那么问题来了,有没有什么操作简单,门槛较低,容易学习操作的计算机语言呢?今天他来了,python!百度是这么说的:简单,易学,速度快等等一系列优点,今天我们就来了解一下python语......
  • GIS人必备神器降临!快速搞定洪水淹没分析!ArcGIS AddIn无源淹没分析插件!
            最近有很多小伙伴给我发私信,想使用我开发的一款基于无源淹没分析算法对洪水淹没进行分析的GIS插件。大部分小伙伴是因为看了我之前发的一个讲解洪水淹没分析算法的视频,在视频中我给大家展示了给某高校水利课题组开发的两款用于洪水淹没分析的插件:一个是基于8邻......
  • 【MyBatis-Plus】最优化持久层开发 快速入门 核心功能介绍与实战 3.5.3.1
    文章目录一、简介二、快速入门三、MyBatis-Plus核心功能3.1基于Mapper接口CRUD3.1.1Insert方法3.1.2Delete方法3.1.3Update方法3.1.4Select方法3.1.5自定义和多表映射3.2基于Service接口CRUD3.2.1对比Mapper接口CRUD区别:3.2.2使用Iservice接口方式3.2.3CRUD方......