【枚举倍数+容斥】CF803 F

news2024/11/24 23:02:15

Problem - F - Codeforces

题意:

思路:

正难则反,考虑容斥

即考虑gcd != 1的所有子序列个数

因为子序列内部无序,因此不算真正的子序列,考虑枚举倍数

根据经典套路,我们去枚举 gcd,然后去枚举倍数,看以这个因子为gcd的子序列个数有多少

很显然,设该 gcd 的个数为 sum,那么每个数都有选和不选,方案数就是 (1 << sum ) - 1

但是注意到不以该因子为 gcd 的子序列会重复计算,因此需要把它们减掉

Code:

#include <bits/stdc++.h>

#define int long long

using i64 = long long;

constexpr int N = 1e6 + 10;
constexpr int mod = 1e9 + 7;

int a[N];
int dp[N];

int qpow(int a, int b, int mod) {
    int res = 1;
    while(b) {
        if (b & 1) {
            res = (res * a) % mod;
        }
        a = (a * a) % mod;
        b >>= 1;
    }
    return res;
}
void solve() {
    int n;
    std::cin >> n;

    std::map<int,int> mp;
    int mx = 0;
    for (int i = 1; i <= n; i ++) {
        std::cin >> a[i];
        mp[a[i]] ++;
        mx = std::max(mx, a[i]);
    }

    for (int i = mx; i >= 1; i --) {
        int sum = 0;
        for (int j = i; j <= mx; j += i) {
            sum += mp[j];
            sum %= mod;
        }
        dp[i] = ((qpow(2, sum, mod) - 1) % mod + mod) % mod;
        for (int j = i * 2; j <= mx; j += i) {
            dp[i] = ((dp[i] - dp[j]) % mod + mod) % mod;
        }
    }
    std::cout << dp[1] % mod<< "\n";
}
signed main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    
    int t = 1;
    
    while (t--) {
        solve();
    }
    
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/876649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【枚举gcd】CF803 C

Problem - C - Codeforces 题意&#xff1a; 思路&#xff1a; 要使所有数的 gcd 尽可能大 设 gcd k 那么就是 k1 * k&#xff0c;k2 * k&#xff0c;k3 * k&#xff0c;.... 它们的和是n 那么(k1 k2 k3 ....) * k n 根据惯用套路&#xff0c;我们去枚举 n 的因子即…

Vue3 setup tsx 子组件向父组件传值 emit

需求&#xff1a;Vue3 setup 父组件向子组件传值&#xff0c;子组件接收父组件传入的值&#xff1b;子组件向父组件传值&#xff0c;父组件接收的子组件传递的值。 父组件&#xff1a;parent.tsx&#xff1a; import { defineComponent, ref, reactive } from vue; import To…

使用GUI Guider工具开发嵌入式GUI应用 (3) - 使用label组件

使用GUI Guider工具开发嵌入式GUI应用 (3) - 使用label组件 文章目录 使用GUI Guider工具开发嵌入式GUI应用 (3) - 使用label组件引言在GUI Guider工程中创建label组件编译MCU工程并下载到开发板 引言 本节讲述在GUI Guider中&#xff0c;应用各种UI的基本元素&#xff0c;并顺…

信创领航,合作共赢 | GBASE南大通用广州天河产业信创联盟协会交流分享会

参与本次会议的成员有&#xff1a; 广州天河信创产业联盟秘书长林坚武、广州天河科技园信息产业联合会秘书长王飞、北明软件事业部总经理周丽娟、盛祺信息副总经理闫建、天亿马营销中心总经理梁志杰、观必达总经理缪明宝、省信息工程资源部总监周燕莉、高科信息生态总监王晖、…

Dubbo基于springboot学习笔记

本文参考&#xff1a;【优极限】最透彻的Dubbo教程&#xff08;dubbo经典之作完整版&#xff09;&#xff0c;阿里分布式框架dubbo零基础实战教学_手把手地啊你读懂底层源码【完整版】_哔哩哔哩_bilibili 1、 互联网架构演变 &#xff08;1&#xff09;单一应用架构 把系统中…

CentOS 8 非编译方式 yum 安装 FFmpeg

FFmpeg 是一套免费的开源计算机程序&#xff0c;它提供了录制、转换以及流化音视频的完整解决方案。FFmpeg 在 Linux 平台下开发&#xff0c;但它同样也可以在其它操作系统环境中编译运行&#xff0c;包括 Windows、Mac OS X 等。大多数文章都是说的ubuntu上如何安装&#xff0…

测试架构师如何落地性能测试方案(一)

背景描述&#xff1a; 最近刚接手一个新项目&#xff0c;在最开始的时候要求对这个项目做性能测试&#xff0c;产品经理也给不出性能需求&#xff0c;只因为这个项目是电商项目&#xff0c;可能会有高并发&#xff0c;秒杀的场景&#xff0c;所以产品经理要求我们对这个项目必…

亿发创新中医药信息化解决方案,自动化煎煮+调剂,打造智能中药房

传统中医药行业逐步复兴&#xff0c;同时互联网科技和人工智能等信息科技助力中医药行业逐步实现数字化转型。利用互联网、物联网、大数据等科技&#xff0c;实现现代科学与传统中医药的结合&#xff0c;提供智能配方颗粒调配系统、中药自动化调剂系统、中药煎配智能管理系统、…

前后端分离------后端创建笔记(05)用户列表查询接口(下)

本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论&#xff0c;如有侵权请联系 源码&#xff1a;https://gitee.com/green_vegetables/x-admin-project.git 素材&#xff1a;https://pan.baidu.com/s/…

2023年国赛数学建模思路 - 案例:感知机原理剖析及实现

文章目录 1 感知机的直观理解2 感知机的数学角度3 代码实现 4 建模资料 # 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 感知机的直观理解 感知机应该属于机器学习算法中最简单的一种算法&#xff0c;其…

类对象数组抽取对象指定属性重新组成新的类对象数组

原本后台返回数据是这样&#xff1a; 我只想要每条数据对象的jianyanneirong和jianyannneirong1两个属性的信息&#xff1a; 1.使用map方法 //contentList是原本类对象数组let a contentList.map((val)>{return {jianyanneirong: val.jianyanneirong,jianyanneirong1: val.…

【EI/SCOPUS检索】第三届计算机视觉、应用与算法国际学术会议(CVAA 2023)

第三届计算机视觉、应用与算法国际学术会议&#xff08;CVAA 2023) The 3rd International Conference on Computer Vision, Application and Algorithm 2023年第三届计算机视觉、应用与算法国际学术会议&#xff08;CVAA 2023&#xff09;主要围绕计算机视觉、计算机应用、计…

展会邀请 | 虹科诚邀您参加8月16日深圳视觉系统设计技术会议

VisionCon视觉系统设计技术会议 将于8月16日在深圳深铁皇冠假日酒店隆重举行&#xff01; 人力成本的提高、国际关系的不确定性等众多因素&#xff0c;都在促使中国制造业采用更先进的自动化及智能化技术&#xff0c;同时也在加速核心技术的国产化。作为智能制造不可或缺的关…

机器学习笔记 - 在 Vision Transformer 中可视化注意力

2022 年,视觉变换器(ViT) 成为卷积神经网络(CNN) 的有力竞争对手,后者现已成为计算机视觉领域的最先进技术,并广泛应用于许多图像识别应用中。在计算效率和准确性方面,ViT 模型超过了当前最先进的 (CNN) 几乎四倍。 一、视觉转换器 (ViT) 如何工作? 视觉转换器模型的性能…

VictoriaMetrics部署及vmalert集成钉钉告警

1、部署VictoriaMetrics cd /usr/local wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.65.0/victoria-metrics-amd64-v1.65.0.tar.gz mkdir victoria-metrics && tar -xvzf victoria-metrics-amd64-v1.65.0.tar.gz && \ mv …

python_PyQt5运行股票研究python方法工具V1.1_增加表格展示控件

承接 【python_PyQt5运行股票研究python方法工具V1.0】 地址 python_PyQt5运行股票研究python方法工具V1.0_程序猿与金融与科技的博客-CSDN博客 目录 结果展示&#xff1a; 代码&#xff1a; 示例py文件代码&#xff08;计算股票日横截面数据&#xff09; 参数json文件 表…

Java SPI机制

Java SPI机制 java的spi就是一种服务提供发现机制&#xff0c;在一方制定好接口规范后&#xff0c;通过spi的机制可以它的子实现类进行服务发现&#xff0c;以及加载它的子实现类&#xff0c;通过这种机制&#xff0c;让我们在引入第三方库时&#xff0c;不用讲第三方库中的类…

Dubbo 核心概念和架构

以上是 Dubbo 的工作原理图&#xff0c;从抽象架构上分为两层&#xff1a;服务治理抽象控制面 和 Dubbo 数据面 。 服务治理控制面。服务治理控制面不是特指如注册中心类的单个具体组件&#xff0c;而是对 Dubbo 治理体系的抽象表达。控制面包含协调服务发现的注册中心、流量管…

如何批量上传截图

转载&#xff1a;如何批量上传截图 目前用的截图是把iphone上的宣传图改大了分辨率而已&#xff0c;并不是真正ipad上的效果&#xff0c;举例&#xff0c;假设目前在做一个项目是 uniapp开发的&#xff0c;可以通过浏览器运行&#xff0c;运行的分辨率改成ipad截图就可以了&a…

ATRank: An Attention-Based User Behavior Modeling Framework for Recommendation

Abstract 异构用户行为 我们的模型考虑了【异构用户行为】,我们将所有类型的行为投射到多个潜在的语义空间中,在这些语义空间中,行为之间可以通过自关注产生影响。 异构用户行为(Heterogeneous User Behavior)指的是在一个系统、平台或社交网络中,不同用户在行为模式、兴…