题目

定义两个非递减数列的笛卡尔和数列\(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. idea中的调试按键(f5,f6,f7,f8,f9)

    f5: 如果断点处存在方法,f5 则强制进入方法内部,然后一步一步执行方法体, 如果再遇到方法,则继续进入方法体,如此循环,直到执行到断点开始处: f6: 从断点处一步步执行以后的代码,会跳出断点所在 ...

  2. JS中的逻辑运算符&&、||

    原文:JS中的逻辑运算符&&.|| 1.JS中的||符号: 运算方法: 只要"||"前面为false,不管"||"后面是true还是false, ...

  3. bat命令复制文件

    del HDT675.applicationdel setup.exedel publish.htmRD /S /Q "Application Files"xcopy /E \\1 ...

  4. Win8.1下Flash Builder 提示: 找不到所需的Adobe Flash Player调试器版本,解决办法

    系统:Win8.1 x64 [解决]安装Flash DeBug最新版本补丁,注意下载对应系统的调试版本 下载地址:http://www.adobe.com/support/flashplayer/do ...

  5. JS国际化网站中英文切换(理论支持所有语言)应用于h5版APP

    网页框架类APP实现国际化参考文案一 参考:https://blog.csdn.net/CSDN_LQR/article/details/78026254 另外付有自己实现的方法 本人用于H5版的AP ...

  6. JQuery+Bootstrap 自定义全屏Loading插件

    /** * 自定义Loading插件 * @param {Object} config * { * content[加载显示文本], * time[自动关闭等待时间(ms)] * } * @param ...

  7. 【WPF】EntityframeworkCore Update注意事项

    The instance of entity type 'Book' cannot be tracked because another instance with the same key valu ...

  8. 首次使用DoNetCore EFCore DbFirst

    环境 Visual Studio 2017 开始搭建项目 1.在 Visual Studio 2017 中创建新项目 “文件”>“新建”>“项目” 从左侧菜单中选择“已安装”>“模板 ...

  9. C# DataTable 和List之间相互转换的方法(转载)

    来源:https://www.cnblogs.com/shiyh/p/7478241.html 一.List<T>/IEnumerable转换到DataTable/DataView 方法一 ...

  10. React: 无状态组件生成真实DOM结点

    在上一篇文章中,我们总结并模拟了 JSX 生成真实 DOM 结点的过程,今天接着来介绍一下无状态组件的生成过程. 先以下面一段简单的代码举例: const Greeting = function ({ ...