zoukankan      html  css  js  c++  java
  • 【CodeVS 3123】 高精度练习之超大整数乘法

    RE了2发   init竟然会开小.......

     1 #include <cstdio>
     2 #include <algorithm>
     3 #include <complex>
     4 #include <iostream>
     5 #include <cmath>
     6 using namespace std;
     7 const  double PI= acos(-1);
     8 int init[100000*4+10];
     9 #define C complex<double>
    10 C a[100000*4+1],b[100000*4+1];
    11 int n,m,rev[100000*4];
    12 void FFT(C a[],int type)
    13 {
    14     for(int i=0;i<n;i++) if(rev[i]<i) swap(a[rev[i]],a[i]);
    15     for(int i=2;i<=n;i<<=1)
    16     {
    17         C wn(cos(2*PI/i),type*sin(2*PI/i));
    18         for(int j=0;j<n;j+=i)
    19         {
    20             C w(1,0),x,y;
    21             for(int k=0;k<i/2;k++)
    22             {
    23                 x=a[j+k];
    24                 y=a[j+k+i/2]*w;
    25                 a[j+k]=x+y;
    26                 a[j+k+i/2]=x-y;
    27                 w=w*wn;
    28             }
    29         }
    30     }
    31 }
    32 int main()
    33 {
    34     //freop0en("a.in","r",stdin);
    35     char c=getchar(); 
    36     while(c!=' ') init[++n]=c-'0',c=getchar();
    37     for(int i=n;i>=1;i--) a[n-i]=init[i];
    38     c=getchar();
    39     while(c!=' ') init[++m]=c-'0',c=getchar();
    40     for(int i=m;i>=1;i--) b[m-i]=init[i];
    41     
    42     n--,m--;
    43    // for(int i=0;i<=n;i++) cout<<a[i]<<' ';cout<<endl;
    44 //    for(int i=0;i<=m;i++) cout<<b[i]<<' ';cout<<endl; 
    45     m=n+m;int L=0
    46     for(n=1;n<=m;n<<=1)L++; L--;
    47     for(int i=0;i<n;i++) rev[i]=((rev[i>>1]>>1)|((i&1)<<L));
    48 
    49     FFT(a,1);FFT(b,1);
    50     for(int i=0;i<n;i++) a[i]*=b[i];
    51     FFT(a,-1);
    52     for(int i=0;i<=m;i++) init[i]=(int)(a[i].real()/n+0.5);//,cout<<init[i]<<' ';cout<<endl;
    53     init[m+1]=0;
    54     for(int i=0;i<=m;i++) init[i+1]+=init[i]/10,init[i]%=10;//,cout<<init[i+1]<<' ';cout<<endl;
    55     if(init[m+1]!=0) m++;
    56     for(int i=m;i>=0;i--) printf("%d",init[i]);
    57     return 0;
    58 }

  • 相关阅读:
    调用GOOGLE的TTS实现文字转语音(XE7+小米2)(XE10.1+小米5)
    Android实例-设置消息提醒(XE8+小米2)
    FastReport二维码打印存在的问题
    一个DELPHI操作USB摄像头类
    利用Delphi编程控制摄像头(图)
    Delphi实现拍照控件的程序代码
    win dos命令行设置ip和dns
    daemontools管理fast-fail的zookeeper
    zookeeper定时清理log
    生成所有全排列 非递归和递归实现
  • 原文地址:https://www.cnblogs.com/ofsxb/p/5154814.html
Copyright © 2011-2022 走看看