U34272 [愚人节题目3]现代妖怪殖民地 fft

题目链接

https://www.luogu.org/problemnew/show/U34272

思路

虽然是个py题。

ntt(或者fft)模板题,可能稍不注意就会T

代码

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int N=1e6+7,mod=998244353;
  4. int n,m,a[N],b[N],limit=1,l,r[N];
  5. int q_pow(int a,int b) {
  6. int ans=1;
  7. while(b) {
  8. if(b&1) ans=1LL*ans*a%mod;
  9. a=1LL*a*a%mod;
  10. b>>=1;
  11. }
  12. return ans;
  13. }
  14. void ntt(int *a,int type) {
  15. for(int i=0;i<limit;++i)
  16. if(i<r[i]) swap(a[i],a[r[i]]);
  17. for(int mid=1;mid<limit;mid<<=1) {
  18. int Wn=q_pow(3,(mod-1)/(mid<<1));
  19. for(int i=0;i<limit;i+=(mid<<1)) {
  20. for(int j=0,w=1;j<mid;++j,w=1LL*w*Wn%mod) {
  21. int x=a[i+j],y=1LL*w*a[i+j+mid]%mod;
  22. a[i+j]=(x+y)%mod;
  23. a[i+j+mid]=(x+mod-y)%mod;
  24. }
  25. }
  26. }
  27. if(type==-1) {
  28. reverse(&a[1],&a[limit]);
  29. int down=q_pow(limit,mod-2);
  30. for(int i=0;i<=limit;++i) a[i]=1LL*a[i]*down%mod;
  31. }
  32. }
  33. void solve() {
  34. limit=1,l=0,n=m=-1;
  35. char s=getchar();
  36. int flag=1;
  37. while(s==' '||s=='\n') s=getchar();
  38. if(s=='-') flag*=-1;
  39. else a[++n]=s-'0';
  40. for(s=getchar();s>='0'&&s<='9';s=getchar()) a[++n]=s-'0';
  41. while(s==' '||s=='\n') s=getchar();
  42. if(s=='-') flag*=-1;
  43. else b[++m]=s-'0';
  44. for(s=getchar();s>='0'&&s<='9';s=getchar()) b[++m]=s-'0';
  45. reverse(a,a+n+1);
  46. reverse(b,b+m+1);
  47. if(flag==-1) printf("-");
  48. while(limit<=n+m) limit<<=1,l++;
  49. for(int i=0;i<=limit;++i)
  50. r[i]=(r[i>>1]>>1)|((i&1)<<(l-1));
  51. ntt(a,1),ntt(b,1);
  52. for(int i=0;i<=limit;++i) a[i]=1LL*a[i]*b[i]%mod;
  53. ntt(a,-1);
  54. int len=limit;
  55. for(int i=0;i<=limit;++i)
  56. a[i+1]+=a[i]/10,a[i]%=10;
  57. while(!a[limit]&&limit) limit--;
  58. while(limit>=0) printf("%d",a[limit--]);
  59. for(int i=0;i<=len;++i) a[i]=b[i]=0;
  60. printf("\n");
  61. }
  62. int main() {
  63. int T;
  64. scanf("%d",&T);
  65. while(T--) solve();
  66. return 0;
  67. }

luogu[愚人节题目3]现代妖怪殖民地 NTT的更多相关文章

  1. luogu愚人节比赛划水记

    先放链接:愚人节比赛 说好的 不毒瘤 呢?题目都太神奇了吧! 管理员的脑洞orz T1 这个可以说是蒙数据蒙出来的,直接输出"0",AC T2 本机房dalao成功发现" ...

  2. 【luogu T24743 [愚人节题目5]永世隔绝的理想乡】 题解

    题意翻译 我们来说说王的故事吧. 星之内海,瞭望之台.从乐园的角落告知汝等.汝等的故事充满了祝福.只有无罪之人可以进入——『永世隔绝的理想乡(Garden of Avalon)』! 题目背景 zcy入 ...

  3. Codefroces 784 愚人节题目(部分)

    A. Numbers Joke time limit per test 2 seconds memory limit per test 64 megabytes input standard inpu ...

  4. nyoj 1870 愚人节礼物

    愚人节的礼物 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  5. 愚人节CDACMFinal

    这个啊,愚人节的ACM之赛,其实还是很有意思的.之前因为星期天不能休息还怨声载道,但真的打起来了就是觉得特别有意思. 我们队,最开始乱搞电脑,cmd都没有办法调用了,霎时间十分慌张(而且我过于慌张忘了 ...

  6. hau 1870 愚人节的礼物(栈)

    愚人节的礼物 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  7. 【FZYZOJ】愚人节礼物 题解(状压DP)

    前言:麻麻我会写状压DP了! ---------------------------- 题目描述 愚人节到了!可爱的UOI小朋友要给孩子们送礼物(汗-原题不是可爱的打败图么= =..).在平面直角坐标 ...

  8. 愚人节大狂欢 – ADN DevBlog谎话连篇友谊赛

    愚人节过去了,你被捉弄了没有? :) 借这个机会,ADN的哥们儿也发泄狂欢了一把,我们4月1号当天在ADN DevBlog上发了一堆谎话连篇的blog,没有一个说实话的,哈哈.这是我们team内部进行 ...

  9. 巧用CSS文件愚人节恶搞(转)

    明天就是4月1日愚人节了,也就是那个可适度开玩笑.整蛊的日子了.如果你想和那些要上网的朋友或同事开个极客式玩笑,那就来试试这个国外网友Wes Bos分享的 CSS 文件吧. 一.打开浏览器的 Cust ...

随机推荐

  1. Nestjs OpenAPI(Swagger)

    官方文档 用来描述api

  2. Git查看两个版本之间修改了哪些文件

    gdiff 63e3b647d55fcc643e793e650c893be8601719b1 548cdaf01dbc2f08d1ca0b697a24afe512b75a2f --stat git l ...

  3. Linux上传文件与执行

    ls ——查看文件夹 mkdir——新建文件夹 cd:——进入文件 nohup python3 文件名.py & ——让代码在后台运行 ps -aux | grep 文件——查看进程 ps-a ...

  4. 完整java开发中JDBC连接数据库代码和步骤[申明:来源于网络]

    完整java开发中JDBC连接数据库代码和步骤[申明:来源于网络] 地址:http://blog.csdn.net/qq_35101189/article/details/53729720?ref=m ...

  5. Codeforces 1100 - A/B/C/D/E/F - (Undone)

    链接:https://codeforces.com/contest/1100 A - Roman and Browser - [暴力枚举] 题意:浏览器有 $n$ 个网页,编号 $1 \sim n$, ...

  6. [转载] apache ab压力测试报错(apr_socket_recv: Connection reset by peer (104))

    遇见相同的问题. https://www.cnblogs.com/felixzh/p/8295471.html -------------------------------------------- ...

  7. HTTP协议工作原理

    HTTP简介        超文本传输协议(HTTP:Hypertext Transport Protocol)是万维网应用层的协议,它通过两个程序实现:一个是客户端程序(各种浏览器),另一个是服务器 ...

  8. SpringBoot内置Tomcat缓存文件目录被意外删除导致异常

    在项目中,一般会将文件临时保存到缓存目录 当时使用 File.createTempFile("tmp", ext, (File) request.getServletContext ...

  9. 【LeetCode每天一题】Jump Game(跳跃游戏)

    Given an array of non-negative integers, you are initially positioned at the first index of the arra ...

  10. linux系统644、755、777权限详解

    在linux系统中644.755.777三种权限是非常重要的一些权限了,下面我来详细的介绍644.755.777三种权限的使用,希望对各位有帮助. 常用的linux文件权限:444 r--r--r-- ...