zoukankan      html  css  js  c++  java
  • 洛谷1303 A*B Problem 解题报告

    洛谷1303 A*B Problem

    本题地址: http://www.luogu.org/problem/show?pid=1303

    题目描述

    求两数的积。

    输入输出格式

    输入格式:

    两个数

    输出格式:

    输入输出样例

    输入样例#1:

    1 
    2

    输出样例#1:

    2

    说明

    需用高精

    题解

    高精度

    像高精度加减法运算一样,模拟乘法竖式运算。我们依然采取先计算后进位的策略。

    1.输入与存储同加法运算。

    2.结果的最大位数是两个因数的位数之和。

    3.按照乘法竖式运算进行计算与进位。

    4.输出之前处理最高位的进位,最高位的进位可能不止一位。

    下面附上代码。

    代码

    1. var    
    2.  st1,st2:ansistring;    
    3.  i,j:longint;    
    4.  x,lena,lenb,lenc:qword;    
    5.  a,b,c:array[0..10000] of qword;    
    6.     
    7. begin     
    8. {读入}    
    9.  readln(st1);    
    10.  readln(st2);    
    11. {预处理}     
    12.  lena:=length(st1);    
    13.  lenb:=length(st2);    
    14.  for i:=to lena do a[lena-i+1]:=ord(st1[i])-48;    
    15.  for i:=to lenb do b[lenb-i+1]:=ord(st2[i])-48;    
    16. {1循环{重置进位} 2循环{{当前乘积+上次进位+原数}{处理进位并取模}} {进位}}    
    17.  for i:=to lena do begin     
    18.   x:=0;    
    19.   for j:=to lenb do begin     
    20.    c[i+j-1]:=a[i]*b[j]+x+c[i+j-1];    
    21.    x:=c[i+j-1] div 10;    
    22.    c[i+j-1]:=c[i+j-1] mod 10;    
    23.   end;    
    24.   c[i+j]:=x;    
    25.  end;    
    26. {确定位数并删零}    
    27.  lenc:=lena+lenb;    
    28.  while (c[lenc]=0)and(lenc>1) do dec(lenc);    
    29. {输出}    
    30.  for i:=lenc downto do write(c[i]);    
    31. end.  

    (本文系笔者原创,未经允许不得转载)

  • 相关阅读:
    SQL 2005的ROW_NUMBER()实现分页的功能
    UML建模工具集
    挽救崩溃的WinXP操作系统四招
    16个经典面试问题回答思路
    自动关闭弹出式窗口
    在winform中嵌入Flash(swf)的方法及常见问题的解决
    C#获取安装程序所在的路径
    转载:C#操作注册表
    C#实现Dll(OCX)控件自动注册的两种方法
    转载:C#创建和修改注册信息
  • 原文地址:https://www.cnblogs.com/yzm10/p/4753403.html
Copyright © 2011-2022 走看看