题目

定义两个非递减数列的笛卡尔和数列\(C = A \oplus B\) 为\((A_i+B_j)\)排序后的非递减数列

\(W\)组询问,问有多少对可能的数列,满足:

\(|C|=s,|A| = m,|B|=s/m\)且\(A \oplus B = C,C = \{ 0,1,\cdots,s-1 \}\)

$1 \le W \le 500 \ , \ 1 \le s , m \le 10^{12} \ , \ 且 m \ | \ s $

题解

  • 这题不好做的原因在于猜不到第一步,暂时还不会证明,证明的瓶颈在于能否证明对于给定一个合法序列A,它的最小的合法序列B满足\(|B| \le |A|\) ,尝试了以晚上无果。。。。

  • 合法的序列\(A \ B\)的布尔序列的生成方式:

    初始时一定都存在\(0\)为\(A , B \ = \ \{ 1 \}\) ,接下来有两种操作:

    1.将\(A\)复制若干遍,\(B\)用全\(0\)补到相同长度

    2.将\(B\)复制若干边,\(A\)用全\(0\)补到相同长度

    1/2开始,交替进行12即可得到所有的合法序列对

  • 讨论12进行的次数之后问题显然对于两维是独立的,变成从1 每次乘以一个非1的数到m的步数

  • 对每个质因子用隔板法统计答案,容斥掉某些位置为1 的情况

  • 时间复杂度:\(O(W\sqrt N log \ s)\)

    #include<bits/stdc++.h>
    #define mod 998244353
    #define ll long long using namespace std; const int N=62;
    ll n,m;
    int ny[N<<1],fac[N<<1],inv[N<<1],d[N],A[N],B[N],ans; void pre(){
    ny[1]=1;for(int i=2;i<=120;++i)ny[i]=1ll*(mod-mod/i)*ny[mod%i]%mod;
    for(int i=fac[0]=inv[0]=1;i<=120;++i)
    fac[i]=1ll*fac[i-1]*i%mod,
    inv[i]=1ll*inv[i-1]*ny[i]%mod;
    }
    void inc(int&x,int y){x+=y;if(x>=mod)x-=mod;}
    void dec(int&x,int y){x-=y;if(x<0)x+=mod;}
    int cal(int x,int y){return x<y?0:1ll*fac[x]*inv[y]%mod*inv[x-y]%mod;}
    void add(int*a,int x){for(int i=1;i<=60;++i)a[i]=1ll*a[i]*cal(x+i-1,i-1)%mod;} void solve(ll x,int*a){
    for(int i=1;i<=60;++i)a[i]=1;
    for(int i=2;1ll*i*i<=x;++i)if(x%i==0){
    int tot=0;while(!(x%i)&&(x/=i))tot++;
    add(a,tot);
    }
    if(x!=1)add(a,1);
    for(int i=1;i<=60;++i)
    for(int j=1;j<i;++j)
    dec(a[i],1ll*cal(i,j)*a[j]%mod);
    } int main(){
    freopen("wsm.in","r",stdin);
    freopen("wsm.out","w",stdout);
    int T;scanf("%d",&T);
    pre();
    while(T--){
    scanf("%lld%lld",&n,&m);
    n/=m;if(n==1||m==1){puts("1");continue;}
    solve(n,A);
    solve(m,B);
    ans=0;
    for(int i=1;i<=60;++i)inc(ans , (2ll*A[i]*B[i]+1ll*A[i+1]*B[i]+1ll*A[i]*B[i+1]) %mod);
    printf("%d\n",ans);
    }
    return 0;
    }

【JZOJ6210】【20190612】wsm的更多相关文章

  1. 【疯狂造轮子-iOS】JSON转Model系列之二

    [疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ...

  2. 【疯狂造轮子-iOS】JSON转Model系列之一

    [疯狂造轮子-iOS]JSON转Model系列之一 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 之前一直看别人的源码,虽然对自己提升比较大,但毕竟不是自己写的,很容易遗 ...

  3. 【原创分享·支付宝支付】HBuilder打包APP调用支付宝客户端支付

    前言 最近有点空余时间,所以,就研究了一下APP支付.前面很早就搞完APP的微信支付了,但是由于时间上和应用上的情况,支付宝一直没空去研究.然后等我空了的时候,发现支付宝居然升级了支付逻辑,虽然目前还 ...

  4. 【AutoMapper官方文档】DTO与Domin Model相互转换(上)

    写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [Au ...

  5. 【Win 10 应用开发】应用预启动

    所谓预启动,其实你一看那名字就知道是啥意思了,这是直接译,也找不到比这个叫法更简练的词了.在系统资源允许的情况下(比如电池电量充足,有足够的内存空间),系统会把用户常用的应用程序在后台启动,但不会显示 ...

  6. 【Win 10 应用开发】启动远程设备上的应用

    这个功能必须在“红石-1”(build 14393)以上的系统版中才能使用,运行在一台设备上的应用,可以通过URI来启动另一台设备上的应用.激活远程应用需要以下前提: 系统必须是build 14393 ...

  7. 【开源】分享2011-2015年全国城市历史天气数据库【Sqlite+C#访问程序】

    由于个人研究需要,需要采集天气历史数据,前一篇文章:C#+HtmlAgilityPack+XPath带你采集数据(以采集天气数据为例子),介绍了基本的采集思路和核心代码,经过1个星期的采集,历史数据库 ...

  8. 【原创分享·微信支付】C# MVC 微信支付教程系列之现金红包

            微信支付教程系列之现金红包           最近最弄这个微信支付的功能,然后扫码.公众号支付,这些都做了,闲着无聊,就看了看微信支付的其他功能,发现还有一个叫“现金红包”的玩意,想 ...

  9. 【原创分享·微信支付】 C# MVC 微信支付教程系列之扫码支付

    微信支付教程系列之扫码支付                  今天,我们来一起探讨一下这个微信扫码支付.何为扫码支付呢?这里面,扫的码就是二维码了,就是我们经常扫一扫的那种二维码图片,例如,我们自己添 ...

  10. 【原创分享·微信支付】 C# MVC 微信支付教程系列之公众号支付

    微信支付教程系列之公众号支付         今天,我们接着讲微信支付的系列教程,前面,我们讲了这个微信红包和扫码支付.现在,我们讲讲这个公众号支付.公众号支付的应用环境常见的用户通过公众号,然后再通 ...

随机推荐

  1. linux安装好的mysql rpm -qa |grep mysql不见

    输入: rpm -qa|grep -i mysql

  2. C# 调用 C++ dll的两种方式

    目录: 1.非托管方式 2.托管方式 3.介绍 extern "C" 4.介绍   DllImport 1.非托管方式 第一种,非托管方式:调用类和方法https://www.co ...

  3. 04、MySQL—数据基础操作

    1.插入操作 本质含义:将数据以SQL的形式存储到指定的数据表(字段)里面 基本语法:向表中指定字段插入数据 Insert into 表名[(字段列表)] values(对应字段列表) 范例:向表中插 ...

  4. python中format函数用于字符串的格式化

    python中format函数用于字符串的格式化 通过关键字 print('{名字}今天{动作}'.format(名字='陈某某',动作='拍视频'))#通过关键字 grade = {'name' : ...

  5. Bootstrap-实现简单的网站首页

    html: <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=" ...

  6. mysql配置临时日志(无需重启服务)

    use mysql; //指定日志的存储方式 SET GLOBAL log_output = 'TABLE'; //查询日志开启 SET GLOBAL general_log = 'ON'; sele ...

  7. 【DATAGUARD】物理dg的switchover切换(五)

    [DATAGUARD]物理dg的switchover切换(五) 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其 ...

  8. 05-jQuery介绍

    本篇主要介绍jQuery的加载.jquery选择器.jquery的样式操作.jQuery的事件.jquery动画等相关知识. 一.jQuery介绍 jQuery是目前使用最广泛的javascript函 ...

  9. Flink使用(三)——记一次Flink Session任务反复重启

    前言 环境: JDK 1.8+Flink 1.6+Hadoop 2.7.3 文中若有表述不正确,欢迎大伙留言指出,谢谢! 1.现象 使用yarn-session在yarn上启动flink集群并提交任务 ...

  10. kubernetes 清理孤儿POD--转发

    孤儿pod的产生 节点OOM以后或者节点异常崩溃的情况下,pod未能被正常的清理而导致的孤儿进程. 提示如下 Orphaned pod found - but volume paths are sti ...