ABC304F Shift Table

news/2024/10/25 3:26:21/

ABC304F Shift Table

题目大意

T T T和小 A A A要做 n n n天的工作。

T T T的工作表表示为字符串 S S S,其中“#”表示当天要工作,“.”表示当天不需要工作。

你需要安排小 A A A的工作,步骤如下

  • 选择一个 n n n的约数 m m m m ≠ n m\neq n m=n
  • 决定这 m m m天的工作安排
  • 对于 i = 1 , 2 , … , n − m i=1,2,\dots,n-m i=1,2,,nm,第 i + m i+m i+m天的工作安排和第 i i i天的相同

求小 A A A有多少种工作安排,使得每一天都至少有一个人在工作?

输出答案模 998244353 998244353 998244353后的值。

2 ≤ n ≤ 1 0 5 2\leq n\leq 10^5 2n105


题解

首先,枚举 n n n的约数,即 m m m的值。然后,对于每一个为“.”的位置 i i i,小 A A A的这个位置都必须是“#”,所以小 A A A的所有 k × m + i k\times m+i k×m+i k ∈ Z k\in Z kZ)的位置都是“#”。用一个桶来存模 m m m后必须是“#”的位置,剩下的任意选。若有 t t t个数满足存在一个 i i i满足 i % m = t i\% m=t i%m=t,那剩下的可以选“#”或“.”,也就是说取当前这个 m m m值的满足题意的方案有 2 m − t 2^{m-t} 2mt个。

当然,这样算会算重,比如算 m = 2 a m=2a m=2a时有一部分是 m = a m=a m=a时算过的。那么,我们记 p t i pt_i pti表示 n n n的第 i i i个约数 p i p_i pi对答案的贡献,其中不包括 p i p_i pi的不等于 p i p_i pi的约数的贡献。那么,枚举 p i p_i pi的不等于 p i p_i pi的约数,用前面的 2 m − t 2^{m-t} 2mt减去对应的 p t pt pt值即可。

n n n的约数最多有 2 n 2\sqrt n 2n 个,所以时间复杂度为 O ( n n ) O(n\sqrt n) O(nn )

code

#include<bits/stdc++.h>
using namespace std;
int n,z[200005],p[200005],re[200005];
char s[100005];
long long ans=0,pt[200005];
const long long mod=998244353;
long long mi(long long t,long long v){if(!v) return 1;long long re=mi(t,v/2);re=re*re%mod;if(v&1) re=re*t%mod;return re;
}
int main()
{scanf("%d%s",&n,s+1);for(int i=1;i<n;i++){if(n%i==0){p[++p[0]]=i;re[i]=p[0];}}for(int i=1;i<=p[0];i++){for(int j=1;j<=n;j++){if(s[j]=='.') z[j%p[i]]=1;}int vt=p[i];for(int j=0;j<p[i];j++){if(z[j]){--vt;z[j]=0;}}pt[i]=mi(2,vt);for(int j=1;j<p[i];j++){if(p[i]%j==0){pt[i]=(pt[i]-pt[re[j]]+mod)%mod;}}ans=(ans+pt[i])%mod;}printf("%lld",ans);return 0;
}

http://www.ppmy.cn/news/217685.html

相关文章

固态硬盘和机械硬盘的区别是什么

一.硬盘是什么 硬盘是计算机最主要的存储设备。硬盘&#xff08;港台称之为硬碟&#xff0c;英文名&#xff1a;Hard Disk Drive&#xff0c; 简称HDD 全名温彻斯特式硬盘&#xff09;由一个或者多个铝制或者玻璃制的碟片组成。这些碟片外覆盖有铁磁性材料。 二.硬盘种类 固…

【科普】1分钟帮你搞懂机械硬盘和固态硬盘

硬盘科普 问题一、机械硬盘和固态硬盘的区别是什么&#xff1f;问题二、我们应该选择哪种硬盘&#xff1f;问题三、笔记本的硬盘可以安装到台式电脑上吗&#xff1f;问题三、机械固态价格对比&#xff1f; 问题一、机械硬盘和固态硬盘的区别是什么&#xff1f; 机械硬盘&#…

超过2t硬盘分区_大于2T的硬盘怎么分区

使用parted工具&#xff1a; #yum install parted #parted /dev/sdb //选择要分的硬盘 #(parted) mklabel gpt //类型GPT Warning: The existing disk label on /dev/sdb will be destroyedand all data on this disk will be lost. Do you want to continue? Yes/No? y…

固态+机械双硬盘的双系统安装

新买的电脑&#xff0c;固态256G&#xff0c;机械1T&#xff0c;默认在固态上安装的win10系统&#xff0c;由于跑代码需求&#xff0c;需要安装一个ubuntu系统&#xff0c;但是之前只有在机械硬盘安装双系统的经验&#xff0c;故查询好多关于固态与机械硬盘的双系统安装教程&am…

固态硬盘和机械硬盘的区别(7大区别,简单易懂)

科技发展之迅速&#xff0c;相信大家对电脑已经很熟悉了&#xff0c;从网页下载的东西自动就存在了电脑之中&#xff0c;简单方便&#xff0c;那么这个东西具体是存在硬件的哪个部分呢&#xff0c;其实是存在了硬盘里。硬盘分为固态硬盘和机械硬盘&#xff0c;固态硬盘和机械硬…

ibm x86 服务器 系列,IBM至强5600全系列服务器横向对比

在前面分述篇中&#xff0c;带大家扫描了至强5600系列的机架、塔式和刀片三大类服务器。本篇&#xff0c;则站在总括的角度&#xff0c;为大家集中展示IBM所有升级后的产品、特性、应用等。 详见&#xff1a;IBM至强5600机架服务器对比导购、IBM至强5600塔式服务器对比导购、IB…

第四代英特尔至强重磅发布,芯片进入下半场:软硬加速、绿色可持续

编辑 | 宋慧 出品 | CSDN 云计算 2023 年的第二周&#xff0c;英特尔重磅发布其企业级芯片领域重要的产品——第四代英特尔 至强 可扩展处理器。作为数据中心处理器当之无愧的王牌产品&#xff0c;迄今为止&#xff0c;英特尔已经向全球客户交付了超8500万颗​至强可扩展处理器…