题目链接:http://codeforces.com/gym/101480/attachments

mark一下O(1)快速乘,啥原理啊?还有这个长度计算,貌似也得好好学学啊?

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MOD=1e6+3;
const int MAXN=1<<21;//玄学:开成两倍会有问题(1<<17=131072,1<<18=262144)
const int M=2e5+5;
ll qpow(ll a,ll b)
{ll ret=1;a%=MOD;while(b){if(b&1){ret=ret*a%MOD;}a=(a*a)%MOD;b>>=1;}return ret%MOD;
}
namespace NTT
{typedef long long ll;const ll MOD=1945555039024054273LL;const ll g=5;ll mul(ll x,ll y){return (x*y-(ll)(x/(long double)MOD*y+1e-6)*MOD+MOD)%MOD;}ll qpow(ll a,ll k){ll res=1LL;while(k>0){if(k&1)res=mul(res,a);a=mul(a,a);k>>=1;}return res;}void change(ll y[],int len){for(int i=1,j=len/2;i<len-1;i++){if(i<j)swap(y[i],y[j]);int k=len/2;while(j>=k){j-=k;k/=2;}if(j<k)j+=k;}}void ntt(ll y[],int len,int on){change(y,len);for(int h=2;h<=len;h<<=1){ll wn=qpow(g,(MOD-1)/h);if(on==-1)wn=qpow(wn,MOD-2);for(int j=0;j<len;j+=h){ll w=1LL;for(int k=j;k<j+h/2;k++){ll u=y[k];ll t=mul(w,y[k+h/2]);y[k]=(u+t)%MOD;y[k+h/2]=(u-t+MOD)%MOD;w=mul(w,wn);}}}if(on==-1){ll t=qpow(len,MOD-2);for(int i=0;i<len;i++)y[i]=mul(y[i],t);}}void cal(ll x1[],ll x2[],ll tot){int len=1;while(len<2*tot)len<<=1;  ntt(x1,len,1);ntt(x2,len,1);for(int i=0;i<len;i++)x1[i]=mul(x1[i],x2[i]);ntt(x1,len,-1);}
}ll A[M],B[M];
ll fact[M*2],inv[M*2];
ll F1[MAXN],F2[MAXN],res[MAXN];
void init()
{fact[0]=1;inv[0]=1;for(int i=1;i<M*2;i++)fact[i]=fact[i-1]*i%MOD;for(int i=1;i<M*2;i++)inv[i]=qpow(fact[i],MOD-2);
}
ll C(ll n,ll m)
{return fact[n]*inv[m]%MOD*inv[n-m]%MOD;
}
int main()
{//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);init();int n;ll a,b,c;ll ans=0;scanf("%d%lld%lld%lld",&n,&a,&b,&c);for(int i=1;i<=n;i++)scanf("%lld",&A[i]);for(int i=1;i<=n;i++)scanf("%lld",&B[i]);for(int i=2;i<=n;i++){ans=(ans+C(n-1+n-i-1,n-i)*qpow(b,n-1)%MOD*qpow(a,n-i)%MOD*B[i]%MOD)%MOD;ans=(ans+C(n-1+n-i-1,n-i)*qpow(b,n-i)%MOD*qpow(a,n-1)%MOD*A[i]%MOD)%MOD;}for(int i=2;i<=n;i++){F1[i]=qpow(b,n-i)*inv[n-i]%MOD;F2[i]=qpow(a,n-i)*inv[n-i]%MOD;}NTT :: cal(F1,F2,n+1);for(int i=0;i<=2*n;i++){F1[i]%=MOD;ans=(ans+fact[2*n-i]*F1[i]%MOD*c%MOD)%MOD;}printf("%lld\n",ans);return 0;
}

2015-2016 ACM-ICPC, Central Europe Regional Contest (CERC 15) F.Frightful Formula(大数NTT)相关推荐

  1. 2016 ACM / ICPC Asia dalian Regional Contest 题解(11 / 11)【每日亿题2021 / 2 / 17】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A .(2017 ACM ICPC dalian H)To begin or not to be ...

  2. ICPC Central Europe Regional Contest 2019 K. K==S(AC自动机+矩阵快速幂)

    Progressive hard octave rock tunes (so-called "phorts") are written using a specifific mus ...

  3. 2021 ICPC Southeastern Europe Regional Contest Werewolves(树上背包)

    2021 ICPC Southeastern Europe Regional Contest Werewolves(树上背包) 链接 题意:给出一个n个节点的树(n≤3000n\le3000n≤300 ...

  4. ICPC Central Russia Regional Contest (CRRC 19)

    ICPC Central Russia Regional Contest (CRRC 19) 文章目录 ICPC Central Russia Regional Contest (CRRC 19) A ...

  5. 2021 ICPC Southeastern Europe Regional Contest(更新至六题)

    2021 ICPC Southeastern Europe Regional Contest A题签到 A. King of String Comparison 题意:给两个字符串,找出有多少对(l, ...

  6. 2017 ACM ICPC Asia Shenyang Regional Contest 题解(10 / 13)【每日亿题2 / 16】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A.(2017 ICPC shenyang I)Little Boxes B.(2017 ICP ...

  7. Central Europe Regional Contest 2019 J. Saba1000kg (并查集+根号讨论)

    链接:https://ac.nowcoder.com/acm/contest/7817/I 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言524 ...

  8. 2016-2017 Central Europe Regional Contest Hangar Hurdles 克鲁斯卡尔重构树 + 建图

    传送门 文章目录 题意: 思路: 题意: 有一个n∗nn*nn∗n的网格图,有若干位置有障碍,有qqq个询问,每次询问给出两个点坐标x1,y1,x2,y2x1,y1,x2,y2x1,y1,x2,y2, ...

  9. Central Europe Regional Contest 2012 Problem c: Chemist’s vows

    字符串处理的题目: 学习了一下string类的一些用法: 这个代码花的时间很长,其实可以更加优化: 代码: 1 #include<iostream> 2 #include<strin ...

最新文章

  1. 目录/文件攻击防范策略研究
  2. Java8 HashMap实现原理探究
  3. django 创建APP 后找不到 templates文件夹下的Html文件
  4. 云原生架构下的持续交付实践
  5. 数据库工程开发秘籍之TSQL 存储过程user stored procedure的概念与案例实战
  6. 华为交换机S3700清空配置方法
  7. 面试官系统精讲Java源码及大厂真题 - 25 整体设计:队列设计思想、工作中使用场景
  8. “迭代期内无变更”与敏捷开发产品版本规划
  9. python dataframe是否为空_python if条件判断dataframe是否为空
  10. QTP自动化测试-点滴-步骤
  11. 【操作基本数据类型的流】
  12. Chapter 6-Blurring Things Up之Do It Twice
  13. 盒子模型及层模型【定位】
  14. 适合Java初学者的项目
  15. 如何从seo的维度来选择网站的关键词
  16. WebService入门(二)wsimport的使用
  17. 头条推荐量越来越少,是否还要坚持下去?
  18. 理解statsmodels中OLS对应基金alpha、beta、R-squared
  19. 《前端单位和网络地址》随手学习笔记
  20. js实现图片放大镜效果

热门文章

  1. android zxing简书,Android集成zxing 版本3.4.1
  2. 算法竞赛基础训练题_填空题
  3. 笔记本蓝牙崩溃、图标消失不能打开蓝牙功能-解决办法(由于蓝牙串口连接出现的问题)
  4. Ubuntu 安装好用的驴子
  5. 虚拟机VMWARE安装win7没有网卡声音等问题解决记录
  6. 阿里全员标配的指令集鼠标垫,我的粉丝每人包邮送一块!!!
  7. 双击 DWG 文件以使用 AutoCAD 打开时显示“Windows 找不到 [文件名].acad.exe
  8. ubuntu20.04分区方案 for deeplearning
  9. matlab 批量处理图片
  10. oracle欧洲,欧洲Godsent和澳大利亚Oracle公布新赛季战队阵容