第三周 7.24-7.30

7.24

HDU 1402 A * B Problem Plus

抄板。

  1 // HDU 1402 A * B Problem Plus
  2 #include <iostream>
  3 #include <cstdio>
  4 #include <cmath>
  5 #include <cstring>
  6 #include <algorithm>
  7 using namespace std;
  8 const int maxn = 5e4 + 10;
  9 int a[maxn], b[maxn], c[maxn<<2];
 10 char s1[maxn], s2[maxn];
 11
 12 // FFT
 13 const double Pi = acos(-1.0);
 14
 15 struct complex
 16 {
 17     double r, i;
 18     complex(double r = 0, double i = 0): r(r), i(i) {}
 19     complex operator + (const complex &ot) const
 20     {
 21         return complex(r + ot.r, i + ot.i);
 22     }
 23     complex operator - (const complex &ot) const
 24     {
 25         return complex(r - ot.r, i - ot.i);
 26     }
 27     complex operator * (const complex &ot) const
 28     {
 29         return complex(r * ot.r - i * ot.i, r * ot.i + i * ot.r);
 30     }
 31 } x1[maxn<<2], x2[maxn<<2];
 32
 33 void change(complex * y, int len)
 34 {
 35     for(int i = 1, j = len >> 1; i < len - 1; i++)
 36     {
 37         if(i < j) swap(y[i], y[j]);
 38         int k = len >> 1;
 39         while(j >= k) j -= k, k >>= 1;
 40         j += k;
 41     }
 42 }
 43
 44 void FFT(complex * y, int len, int on)
 45 {
 46     change(y, len);
 47     for(int h = 2; h <= len; h <<= 1)
 48     {
 49         complex wn = complex(cos(on * 2 * Pi / h), sin(on * 2 * Pi / h));
 50         for(int j = 0; j < len; j += h)
 51         {
 52             complex w = complex(1, 0);
 53             for(int k = j; k < j + h / 2; k++)
 54             {
 55                 complex u = y[k];
 56                 complex t = y[k+h/2] * w;
 57                 y[k] = u + t;
 58                 y[k+h/2] = u - t;
 59                 w = w * wn;
 60             }
 61         }
 62     }
 63     if(on == -1)
 64     {
 65         for(int i = 0; i < len; i++)
 66         {
 67             y[i].r /= len;
 68         }
 69     }
 70 }
 71
 72 void cal(int * a, int * b, int * c, int l)
 73 {
 74     int len = 1;
 75     while(len < l * 2) len <<= 1;
 76     for(int i = 0; i < l; i++)
 77     {
 78         x1[i] = complex(a[i], 0);
 79         x2[i] = complex(b[i], 0);
 80     }
 81     for(int i = l; i < len; i++) x1[i] = x2[i] = complex(0, 0);
 82     FFT(x1, len, 1);
 83     FFT(x2, len, 1);
 84     for(int i = 0; i < len; i++) x1[i] = x1[i] * x2[i];
 85     FFT(x1, len, -1);
 86     for(int i = 0; i < len; i++)
 87         c[i] = x1[i].r + 0.5;
 88 }
 89
 90 int main(void)
 91 {
 92     while(~scanf("%s %s", s1, s2))
 93     {
 94         int l1 = strlen(s1), l2 = strlen(s2);
 95         int l = max(l1, l2);
 96         for(int i = 0; i < l; i++)
 97         {
 98             a[i] = l1 - i - 1 >= 0 ? s1[l1-i-1] - ‘0‘ : 0;
 99             b[i] = l2 - i - 1 >= 0 ? s2[l2-i-1] - ‘0‘ : 0;
100         }
101
102         memset(c, 0, sizeof(c));
103         cal(a, b, c, l);
104         for(int i = 0; i < l1 + l2; i++)
105         {
106             c[i+1] += c[i] / 10;
107             c[i] %= 10;
108         }
109
110         int st = 0;
111         for(int i = l1 + l2; i >= 0; i--)
112         {
113             if(!st && !c[i] && i) continue;
114             st = 1;
115             printf("%d", c[i]);
116         }
117         puts("");
118     }
119     return 0;
120 }

Aguin

时间: 2024-11-17 18:37:51

第三周 7.24-7.30的相关文章

印度浦那三周感受

本来打算写印度浦那一周感受的,结果一周过去了一个字都没写,然后打算写二周感受,结果第二周也没找到时间来写.第三周是异常繁忙的一周,终于在周末找到了一点时间来编写. 这次去印度浦那是作为ThoughtWorks University的Coach,需要在印度呆3个多月. 2月27日从成都出发到浦那,整个过程非常纠结,需要成都飞上海,然后上海飞德里,最后德里飞浦那.整个行程从周六下午的2点到周日早上的7点才完成.周日早上的7点是浦那的时间.浦那和中国有两个半小时的时差,所以浦那的早上7点是中国的早上9

第三周博客问题总结

1.学会了```的用法 一开始并没有成功,后来发现是因为输入法没有切换成英文,今后这样的问题要避免出现.--20145106 2.问题:教材86页,Guess的代码,猜数字,不知道原先没有设定好一个数字,为什么可以在0-9之间猜中一个数 解答:百度了(Math.random()10)这行代码的意思,知道了(Math.random())的意思是在[0,1)之间随机产生一个数字,10,所以变成了[0,10)之间随机产生一个数字,所以可以进行猜数字 --20145123 3.IntegerCache.

三周第三次课(12月27日) 3.7 su命令 3.8 sudo命令 3.9 限制root远程登录

三周第三次课(12月27日)3.7 su命令3.8 sudo命令3.9 限制root远程登录 su命令: 用户和工作组管理: su命令用于切换当前用户身份到其他用户身份, 变更时须输入所要变更的用户帐号与密码. 语法: su(选项)(参数) 选项: -c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份: -f或--fast:适用于csh与tsch,使shell不用去读取启动文件: -l或--login:改变身份时,也同时变更工作目录,以及HOME,SHE

三周第五次课(12月29日) 4.5/4.6 磁盘格式化 4.7/4.8 磁盘挂载 4.9 手动增加swap空间

三周第五次课(12月29日)4.5/4.6 磁盘格式化4.7/4.8 磁盘挂载4.9 手动增加swap空间 [[email protected] ~]# [[email protected] ~]# mke2fs命令文件系统管理mke2fs命令被用于创建磁盘分区上的"etc2/etc3"文件系统. 语法:mke2fs(选项)(参数) 选项:-b<区块大小>:指定区块大小,单位为字节:-c:检查是否有损坏的区块:-f<不连续区段大小>:指定不连续区段的大小,单位为

20165235祁瑛 2018-3 《Java程序设计》第三周学习总结

20165235祁瑛 2018-3 <Java程序设计>第三周学习总结 教材学习内容总结 类与对象学习总结 类:java作为面向对象型语言具有三个特性:①封装性.②继承性.③多态性.java中类是基本要素,类声明的变量叫对象.在类中定义体的函数题叫方法. 类与程序的基本结构:(一)构造方法:创建对象时用,构造方法与类同名,没有类型.可以创建构造方法,但要保证参数个数不同或参数类型不同.(二)为对象分配变量时要用new字符.用"."运算符来操作对象.(三)java有若干个类构

王之泰201771010131《面向对象程序设计(java)》第三周学习总结

王之泰201771010131<面向对象程序设计(java)>第三周学习总结 第一部分:理论知识复习部分 第一章 回顾了Java"白皮书"的关键性语句,再次理解了以前未理解的句子.对Java语言的十多种特性又有了更深刻的理解和不同角度的体会. 第二章 继续使用eclipse实验开发程序,在jdk源文件中仔细欣赏体会了标准代码的范例,以此来规范自己的编写风格. 第三章 第三章中复习了Java的基本语法,着重复习了运算符的使用和文件的输入输出,深刻理解了例如:控制流程语句等五种

赵栋 201771010137 第三周学习总结

自主学习任务 1. 复习课程第1-3章学习内容 2. 回顾实验三中实验题1<2018秋季西北师范大学面向对象程序设计(Java)(ch1-ch3)测试题1>,对照测试题参考答案,反思修改本人答卷的错误内容: 3.完成实验2与实验3: 4.修改置顶博文<面向对象程序设计课程学习进度条>,记录第三周个人编程水平提升参数 第一部分:复习第一到三章 1.第一章 复习了Java语言的优点,发展简史,以及Java语言的关键术语和"白皮书"的特性,对Java的了解更加深刻了一

杨其菊201771010134《面向对象程序设计(Java)》第三周学习总结

<面向对象程序设计(Java)>第三周学习总结 第一部分:理论知识 这周课程没有新进度,由于感觉对基础语法的不熟悉,复习了一遍前三章的细碎知识,学到一些之前不知道的原理: 1.计算机高级语言按程序的方式可以分为两种:编译型和解释型 编译型:C,C++,Objective-C,Pascal等: 解释型:Ruby,Python, 半编译型:Visual Basic, java:既是编译型语言又是解释型语言. 2.classpath 环境变量的设置:如果使用1.5以上的版本,完全可以不用设置这个环境

20172311《程序设计与数据结构》第三周学习总结

20172311<程序设计与数据结构>第三周学习总结 教材学习内容总结 第五章 队列 在任何的队列中,元素都是从一端进入,从另一端离开 队列是一种线性集合,先进先出即第一个进入的元素也是第一个退出的元素 与栈类似,队列中没有操作能让用户"抵达"队列中部,同样也没有操作允许用户重组或删除多个元素 队列的首要作用是保持顺序 对于单向链表实现队列,可选择从末端入列,从前端出列 用固定数组来实现栈的效率不高,把数组看作是环形的,可以除去在队列的数组实现中把元素位移的需要 教材学习中

20182327 2019-2020-1 《数据结构与面向对象程序设计》第二第三周学习总结

20182327 2019-2020-1 <数据结构与面向对象程序设计>第二第三周学习总结 教材学习内容总结 在第二章的学习中,首先学习了Java编程的基本格式,然后学会了定义.赋值.使用各种数据类型的变量,可以独立打印数据到屏幕上,最后掌握了如何使用Scanner类的一般使用方法. 从第三章中,我学到了由String.Math.Random等类创建对象(即实例化对象),如果要使用Java.long包以外的类,要使用import声明,最后枚举类型,包装类没有看懂. 教材学习中的问题和解决过程