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.  

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

  • 相关阅读:
    MYSQL长连接的一个小问题
    wpf关于PasswordBox的绑定Password的问题(MVVM框架)
    关于C# DataGridView 全选与取消的小问题
    谈谈在京东手机APP的产品推荐
    赵海平给中国开发者的建议
    python_闭包_匿名函数
    mysql远程连接10038错误
    计算机系统 -- 计算机
    Java——类和对象
    ORACLE数据库定时任务—DBMS_JOB
  • 原文地址:https://www.cnblogs.com/yzm10/p/4753403.html
Copyright © 2011-2022 走看看