1. 程式人生 > >hdu1402 大數A*B

hdu1402 大數A*B

問題來源:

http://acm.hdu.edu.cn/showproblem.php?pid=1402

題目描述:

Calculate A * B. 

Input

Each line will contain two integers A and B. Process toend of file. 

Note: the length of each integer will not exceed 50000. 

Output

For each case, output A * B in one line. 

Sample Input

1

2

1000

2

Sample Output

2

2000

計算a*b,6位一乘,否則tle,而且只能交G++,另外傅立葉演算法也可以

程式程式碼:

#include<stdio.h>
#include<string.h>
#define N 50100
int a[N],b[N];
long long A[N],B[N],ans[N];
char s1[N],s2[N];
int main()
{
    int i,j,len1,len2,l,r,L,R,x;
    long long t,p,c;
    while(scanf("%s%s",s1,s2)!=EOF)
    {
     if(s1[0]=='0'||s2[0]=='0')
     {
     printf("0\n");
     continue;
     }
        memset(a,0,sizeof(a));                       
        memset(b,0,sizeof(b));
        memset(A,0,sizeof(A));
        memset(B,0,sizeof(B));
        memset(ans,0,sizeof(ans));
         
        len1=strlen(s1);
        len2=strlen(s2);
        l=len1-1;
        r=len2-1;
        for(i=0;i<len1;i++)                     
        a[l--]=(s1[i]-'0');
        for(j=0;j<len2;j++)
        b[r--]=(s2[j]-'0');
        L=0;R=0;
    
         for(i=0;i<len1;i+=6)
          
            A[L++]=a[i+5]*100000+a[i+4]*10000+a[i+3]*1000+a[i+2]*100+a[i+1]*10+a[i];
                                              
        for(i=0; i<len2; i+=6)
          
            B[R++]=b[i+5]*100000+b[i+4]*10000+b[i+3]*1000+b[i+2]*100+b[i+1]*10+b[i];
  
        for(i=0;i<L;i++)
        {
            c=0;
            for(j=0; j<R; j++)
            {
                t=A[i]*B[j]+ans[i+j]+c;            
                ans[i+j]=t%1000000;
                c=t/1000000;
               
            }
            if(c)
                ans[i+j]=c;
        }
          
      
        for(x=L+R;ans[x]==0;x--){
        }
        printf("%lld",ans[x]);
        
        for(x--; x>=0;x--)
        printf("%06lld",ans[x]);                 
        printf("\n");
    }
    return 0;
}

相關推薦

hdu1402(大數a*b&amp;fft模板)

net display img 初始化 stdio.h 位置 scanf ios https 題目鏈接: http://acm.hdu.edu.cn/showproblem.php?pid=1402 題意: 給出兩個長度1e5以內的大數a, b, 輸出 a * b.

hdu1402 大數A*B

問題來源:http://acm.hdu.edu.cn/showproblem.php?pid=1402題目描述:Calculate A * B. InputEach line will contain

HDU1402A * B Problem Plus——題解

|| name nbsp pro style plus string stream size http://acm.hdu.edu.cn/showproblem.php?pid=1402 給出兩個高精度正整數,求它們的積,最長的數長度不大於5e4。 FFT裸題,

大數a+b

#include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<vector> #include<map>

大數A+B問題

原理         大數運算的原理其實就是模擬人工計算(註記:再考慮是否有其他演算法。註記日期:2017.3.19),人工加法計算步驟如下:     1.將兩個運算元(operand)位數對齊。     2.從最低位開始,計算兩個運算元每位的總和再加上進位數(第一

hdoj 1002 A + B Problem II 【大數A+B

A + B Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 308540    Accep

NYOJ 103.大數A+B大數問題)

/*描述 I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B. A,B must be positive. 輸

大數a+b(整數)

給出2個大整數A,B,計算A+B的結果。Input第1行:大數A第2行:大數B(A,B的長度 <= 10000 需注意:A B有可能為負數)Output輸出A + BSample Input68932147586468711654886Sample Output5376

大數a+b大數

I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B.InputThe first line of the inp

HPU 1002 A + B Problem II【大數

lar 保存 memory positive test size mod ack auth A + B Problem II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/327

HDU 1402 A * B Problem Plus ——(大數乘法,FFT)

兩個 ret 處理 complex truct std spa strlen mes   因為剛學fft,想拿這題練練手,結果WA了個爽= =。   總結幾點犯的錯誤:   1.要註意處理前導零的問題。   2.一定要註意數組大小的問題。(前一個fft的題因為沒用到b數組,

題解報告:hdu 1002 A + B Problem II(大數加法)

return 大數類 class family HERE contains urn integer ons Problem Description I have a very simple problem for you. Given two integers A and

HDU1002 A + B Problem II【大數

A + B Problem II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission

【c++大數加法】A+B陣列實現

#include<iostream> #include<cstring> #include<algorithm> #include<cstdio> using namespace std; char ac[10005]; char bc[1000

計算機考研複試真題 a+b(大數加法)

題目描述 實現一個加法器,使其能夠輸出a+b的值。 輸入描述: 輸入包括兩個數a和b,其中a和b的位數不超過1000位。 輸出描述: 可能有多組測試資料,對於每組資料, 輸出a+b的值。 示例1 輸入

A + B Problem II JAVA大數水過

Description I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B.   Input

(java) 大數相加 A+B

java對於大數有BigInteger和BigDecimal;本題用字串進行操作。   import java.util.*; public class Main { public static void main(String[] args) { Scanner sc

程式設計俱樂部每日一練(2018年12月3日)A * B Problem大數乘法

程式設計俱樂部每日一練(2018年12月3日)A * B Problem大數乘法 A * B Problem Description Now Give you two integers A and B , please caculate the value of A multiply

程式設計俱樂部每日一練(2018年12月2日) A - B problem大數減法

程式設計俱樂部每日一練(2018年12月2日) A - B problem大數減法 Description Now, Give you two intgers A and B , Please calculate the value of A minus B. Attation:

# 程式設計俱樂部每日一練(2018年11月30日)A + B problem 大數加法

程式設計俱樂部每日一練(2018年11月30日)A + B problem 大數加法 Description Calculate A + B. Input Each line will contain two integers A and B. Process to end