hdu 1402 A * B Problem Plus FFT模板

大数模板(C++)大数加法、大数乘法、大数除法 用C++写的重载的大数模板 大数加法、大数乘法、大数除法、大数减法 带有注释 立即下载

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1402

FFT的模板题,先转成点表示法O(n)相乘之后再IDFT转回来。最后输出结果

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
#define mod 1000000007
#define For(i,m,n) for(int i=m;i<=n;i++)
#define Dor(i,m,n) for(int i=m;i>=n;i--)
#define LL long long
#define lan(a,b) memset(a,b,sizeof(a))
#define sqr(a) a*a
using namespace std;



const double PI = acos(-1.0);

//  复数结构体
struct Complex
{
    double x, y;    //  实部和虚部 x + yi
    Complex(double _x = 0.0, double _y = 0.0)
    {
        x = _x;
        y = _y;
    }
    Complex operator - (const Complex &b) const
    {
        return Complex(x - b.x, y - b.y);
    }
    Complex operator + (const Complex &b) const
    {
        return Complex(x + b.x, y + b.y);
    }
    Complex operator * (const Complex &b) const
    {
        return Complex(x * b.x - y * b.y, x * b.y + y * b.x);
    }
};

//  进行FFT和IFFT前的反转变换
//  位置i和(i二进制反转后的位置)互换
//  len必须去2的幂
void change(Complex y[], int len)
{
    int i, j, k;
    for (i = 1, j = len / 2; i < len - 1; i++)
    {
        if (i < j)
        {
            swap(y[i], y[j]);
        }
        //  交换护卫小标反转的元素,i < j保证交换一次
        //  i做正常的+1,j左反转类型的+1,始终保持i和j是反转的
        k = len / 2;
        while (j >= k)
        {
            j -= k;
            k /= 2;
        }
        if (j < k)
        {
            j += k;
        }
    }
    return ;
}

//  FFT
//  len必须为2 ^ k形式
//  on == 1时是DFT,on == -1时是IDFT
void fft(Complex y[], int len, int on)
{
    change(y, len);
    for (int h = 2; h <= len; h <<= 1)
    {
        Complex wn(cos(-on * 2 * PI / h), sin(-on * 2 * PI / h));
        for (int j = 0; j < len; j += h)
        {
            Complex w(1, 0);
            for (int k = j; k < j + h / 2; k++)
            {
                Complex u = y[k];
                Complex t = w * y[k + h / 2];
                y[k] = u + t;
                y[k + h / 2] = u - t;
                w = w * wn;
            }
        }
    }
    if (on == -1)
    {
        for (int i = 0; i < len; i++)
        {
            y[i].x /= len;
        }
    }
}
int const N=200005;
int n,m;
char a[N],b[N];
Complex x[N],y[N];
LL ans[N];
int sum[N];

int main()
{
    while(~scanf("%s%s",&a,&b))
    {
        n=strlen(a),m=strlen(b);
        int len=1;
        while(len<n*2||len<m*2)len<<=1;
        For(i,0,n-1)
        {
         x[i]=Complex(a[n-1-i]-'0',0);
        }
        For(i,n,len-1)
        {
            x[i]=Complex(0,0);
        }

        For(i,0,m-1)
        {
         y[i]=Complex(b[m-1-i]-'0',0);
        }
        For(i,m,len-1)
        {
            y[i]=Complex(0,0);
        }

        fft(x,len,1);
        fft(y,len,1);
        For(i,0,len-1)
        {
            x[i]=x[i]*y[i];
        }
        fft(x,len,-1);
        For(i,0,len-1)
            sum[i]=(int)(x[i].x+0.5);
        For(i,0,len-1)
        {
             sum[i+1]+=sum[i]/10;
            sum[i]%=10;
        }
        len=n+m-1;

        int id;
        while(sum[len]<=0&&len>0)len--;
        Dor(i,len,0)
            printf("%d",sum[i]);
        puts("");
    }

    return 0;
}

 

告别数据丢失焦虑:用Python手把手实现Reed-Solomon码(附完整代码) 本文详细介绍了如何使用Python实现Reed-Solomon纠错码(RS码),帮助开发者有效防止数据丢失。通过基础编解码实战、文件保护方案和高级性能优化技巧,读者可以轻松掌握这一前向纠错技术,应用于物联网、文件存储和网络传输等场景,提升数据可靠性。 阅读详情

相关推荐

手把手教你用MSPM0G3507和TB6612驱动MG513X电机(附完整代码与PID调速)

本文详细介绍了如何使用MSPM0G3507微控制器和TB6612驱动模块控制MG513X电机,包括硬件连接、软件配置、编码器测速和PID调速等关键步骤。通过完整的代码示例和PID算法实现,帮助开发者快速掌握电机驱动技术,适用于智能小车、机械臂等嵌入式项目。

weixin_30254435的博客 341

大数相乘

根据大数相加,写出的简单的大数相乘的模板,有待改进中~~~~~~ #include #include const int N = 100; int main() { int i,j,k; int d1,d2; int a[N]={0},b[N]={0},sum[2*N]={0}; char c[N]; // memset(c,'0',sizeof(c)); // memset(a,0,

free斩 897

别再为跨页读写发愁了!STM32F407模拟I2C驱动24C256/512的避坑指南

本文详细解析了STM32F407模拟I2C驱动24C256/512的跨页写入问题,揭示了24C系列存储器'写满一页不会自动翻页'的关键机制,并提供了经过验证的分页写入算法和优化方案。通过GPIO时序优化、地址计算和错误处理等技巧,帮助开发者解决数据错乱、覆盖等常见问题,实现稳定可靠的EEPROM读写操作。

weixin_42631411的博客 377

大数乘法模板

/* 两个非常大的数相乘 模拟乘法运算 */ #include #include #include #include #include #include #include #include using namespace std; #define MAX_N 221   int a1[MAX_N],a2[MAX_N];   char s1[MAX_N],s2[

路漫漫 始于足下 560

关于图像傅里叶变换得到的频谱图的通俗理解

傅里叶变换过程: 经过傅里叶变化且频谱居中化处理的频谱图: 1.如果将图像某一行上的灰度变化看作是一个离散信号,那么整张图像可以看作是一个分布在二维平面上的信号,因此图像可看作是空间域信号。傅里叶变换则是将图像灰度分布(空间域信号)变换到了频域上,给我们提供了观察图像的另一个视角。 2.图像的频谱图(频谱居中后)的中心点是频率最低点,以该点为圆心,不同半径的上的点表示不同的频率。这里的图像频率是指对应原图像中的某灰度曲线变化的快慢(这么说不严谨,但是按照上面第1点的角度,似乎也可以这么理解

daimashiren的博客 2万+

CloudCompare 二次开发(9)——半径滤波

基于PCL对CloudCompare软件进行二次开发,实现的算法功能是半径滤波

点云侠的博客 1401

大数乘法(模板)

#include #include #include #include using namespace std; char c[1000001]; void reverse(char * c)//字符串翻转函数 { int len = strlen(c); for(int i=0; i<len/2; i++) swap(c[i],c[len-i-1]); } voi

W-Jarvis把冰雪披戴在肩膀 459

Plant Simulation与ABB机器人虚实结合

Plant Simulation与ABB机器人虚实结合

santayana的专栏 1869

c++各类大数模板

首先大数加法 两个大数相加 string sum(string s1,string s2) { if(s1.length()<s2.length()) { string temp=s1; s1=s2; s2=temp; } int i,j; for(i=s1.length()-1,j=s2.length()-1;i>=0;i--,j--) { s1[i]=char(s

大神养成中..... 1万+

DW3000芯片驱动API介绍

详细介绍DW3000驱动程序API的调用流程说明和中断处理程序流程说明

DT程序员的博客 1521

【异常】Claude Code 第三方API 400报错(thinking type should be enabled or disabled)解决方案

摘要: Claude Code接入第三方API端点时出现400参数错误,主要因新版默认启用的Adaptive Thinking功能与旧版接口参数格式不兼容(需thinking: {type: "adaptive"},但第三方仅支持布尔值)。解决方案为修改本地settings.json配置文件,添加"CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING": "1"环境变量并重启客户端,即可恢复思考模式功能。Adaptive Th

奶爸的编程之路,也就一周冷个三天 1万+

[HDU1402]A * B Problem Plus && FFT模板

复习了一发FFT的模板 然后只想说 这TM到底都是在干啥QAQ  好吧 以后要找机会重新学QAQ  存个模板在这里  今天看那个数学也是醉了啊orzorz #include #include #include #include #include #include #define SF scanf #define PF printf #define DPI (PI*2) using name

shiyukun1998的专栏 487

用 XCO_CP_XLSX 在 ABAP 中写 Excel:从写入访问到样式控制的完整指南

本文介绍了在 ABAP 环境中使用 XCO_CP_XLSX 模块导出 Excel 报表的完整实践方案。文章从获取写入访问权限开始,详细讲解了基于 row_stream 的批量数据写入和基于 cursor 的精细控制两种方法,并提供了创建新文档、添加工作表、设置样式等关键操作示例。通过分层抽象的工作簿-工作表-单元格模型,开发者可以灵活应对企业应用中常见的报表导出需求,特别是在 SAP BTP 和 S/4HANA Cloud 环境下实现高效可靠的 Excel 文件生成与处理。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 163

hdu 1402 A * B Problem Plus (FFT模板)

题目链接:哆啦A梦传送门 题意:给出a,b,求a*b。a,b的长度不超过50000。 FFT参考博客:https://blog.youkuaiyun.com/enjoy_pascal/article/details/81478582 https://blog.youkuaiyun.com/qq_38944163/article/details/81835205 题解:这里直接套用kuangbin的模板。 htt...

Jiandong 204

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

FFT/NTT模板 既 HDU1402 A * B Problem Plus

@(学习笔记)[FFT, NTT] Problem Description Calculate A * B. Input Each line will contain two integers A and B. Process to end of file. Note: the length of each integer will not exceed 50000. Output Fo...

dk810510的博客 158

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

[HDU1402] A * B Problem Plus && FFT模板

#include #include #include #include #include #include #define SF scanf #define PF printf #define DPI (PI*2) using namespace std; typedef long long LL; struct cpx { double re, im; cpx () {} cpx (dou

shiyukun1998的专栏 436

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

HDU 1402 A * B Problem Plus (FFT模板题)

HDU 1402 A * B Problem Plus (FFT模板题)

JayYe的专栏 1885

A * B Problem Plus HDU - 1402 (FFT模板题)

大致题意 多组数据,每组输入两个整数A,B,长度不超过50000,求AxB; 思路 FFT第一道题,贴一下FFT板子。注意首先要把多项式长度变成2的次幂,然后是i从低到高存储数据的,跟输入相反,然后高位补零。 代码 #include<bits/stdc++.h> using namespace std; #define maxn 200005 #define maxm 1000006 ...

lalalafloat的博客 194

hdu 1402 A * B Problem Plus FFT模板

FFT的实现..涉及大量的数学知识..搞不来..更玄学了..... 反正FFT就是能够在O(nlogb)时间内将系数表示法转化为点值表示法,相乘后再将点值表示法转为系数表示法,然后实现卷积。 FFT过程: 两个次数界为n的多项式A(x)和B(x)相乘,输入输出均采用系数表示法。(假定n为2的幂) 1)使次数界增加一倍:A(x)和B(x)扩充为次数界为2n的多项式,并构造起系数表示。 2)

WJSZMRX 622

HDU 1402 A * B Problem Plus(高精度乘法FFT模板题)

题目链接:点这里 题目大意:A*B=??? 解题思路:FFT模板,别问为什么,问就是不会(脑部滑稽) #include<bits/stdc++.h> using namespace std; typedef long long LL; const double PI=acos(-1.0),eps=1e-8; #define L(x) (1 << (x...

Starbucks 300

HDU 1402 A * B Problem Plus (FFT模板题)

A * B Problem Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 18229    Accepted Submission(s): 4080 Problem Description Calculate A

LzyRapX 1033

[HDU 1402]A * B Problem Plus(其实是FFT模板)

Problem DescriptionCalculate A * B.Solution本来是想交一下bzoj2179的,打开之后发现是权限题= = 一怒之下找到了高精度乘…很好感觉对FFT的理解并不完全,有时间再看看算导吧,先苟延残喘地打个板子凑合用= =#include<iostream> #include<cstring> #include<cstdio> #include<cstdlib>

Zaaaaars19 279

HDU 1402 A * B Problem Plus (大数乘法,FFT模板题)

题目链接HDU1402题意求两个长度为50000内的大数的乘积。分析本题为用FFT/NTT求多项式乘法的模板题。 大数乘法可以看成是多项式乘法的特例,大数的个位相当于0次项系数,十位相当于1次项系数…以此类推。代码因为这是我写FFT的第一道题,故用FFT和NTT都写一遍。 法1:FFT/**大数乘法,用FFT实现**/ #include <iostream> #include <cstdio>

歪歪T的拿金之路 451

[hdu1402]A * B Problem Plus(FFT模板题)

解题关键:快速傅里叶变换fft练习。 关于结果多项式长度的确定,首先将短多项式扩展为长多项式,然后扩展为两倍。 #include<cstdio> #include<cstring> #include<algorithm> #include<cstdlib> #include<iostream> #include<c...

weixin_30540691的博客 99

hdu----(1402)A * B Problem Plus(FFT模板)

A * B Problem Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 12665    Accepted Submission(s): 2248 Problem Description Calculate A * B....

weixin_34132768的博客 161
上一篇: codeforces 1023a
下一篇: codeforces 1025B Weakened Common Divisor STL,分解质因数
Dale_zero
博客等级 码龄9年 10粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值