首页 > 其他分享 >POJ 3289(高精度乘法)

POJ 3289(高精度乘法)

时间:2022-10-25 12:00:29浏览次数:82  
标签:begin end doc arr len longint POJ 3289 乘法


高精度乘法


Program P3289;
const
maxn=40000;
F=10;
type
arr=record
d:array[1..maxn] of longint;
len,doc:longint;
end;
var
r,m:arr;
y:longint;
i:longint;
a,b:arr;
function max(a,b:longint):longint;
begin
if a<b then exit(b) else exit(a);
end;
procedure multipy(a,b:arr;var c:arr);
var
i,j,len:longint;
begin
fillchar(c,sizeof(c),0);
c.len:=a.len+b.len;

for i:=1 to a.len do
for j:=1 to b.len do
begin
inc(c.d[i+j-1],a.d[i]*b.d[j]);
inc(c.d[i+j],c.d[i+j-1] div F);
c.d[i+j-1]:=c.d[i+j-1] mod F;
end;
while (c.d[c.len]=0) and (c.len>1) do dec(c.len);
c.doc:=a.doc+b.doc;


end;
procedure to_arr(doc:longint;var c:arr);
var
x,i,n:longint;
begin
read(x);
i:=0;
while (x>0) do
begin
inc(i);
c.d[i]:=x mod F;
x:=x div F;
end;
c.len:=i;
c.doc:=doc;
end;
Procedure jie(a:arr;x:longint;var c:arr);
begin
if x=1 then begin c:=a; exit; end;
fillchar(c,sizeof(c),0);
if (x mod 2=0) then
begin
jie(a,x div 2,c);
multipy(c,c,c);
end
else
begin
jie(a,x div 2,c);
multipy(c,c,c);
multipy(a,c,c);
end;
end;
begin
to_arr(2,r);
r.len:=3;r.d[3]:=1;
to_arr(0,m);
read(y);
jie(r,y,r);
multipy(m,r,m);


for i:=m.len downto m.doc+1 do write(m.d[i]);
writeln;

end.



标签:begin,end,doc,arr,len,longint,POJ,3289,乘法
From: https://blog.51cto.com/u_15724837/5794425

相关文章

  • BZOJ 2111([ZJOI2010]Perm 排列计数-乘法逆元+完全二叉树模型+数列分数表示法)
    2111:[ZJOI2010]Perm排列计数TimeLimit: 10Sec  MemoryLimit: 259MBSubmit: 478  Solved: 283[​​Submit​​][​​Status​​][​​Discuss​​]......
  • POJ 1222(Gauss消元xor版)
    EXTENDEDLIGHTSOUTDescriptionLightsOut就是下图的游戏,给你一个5*6的矩阵. 你的目标是把灯全关上. 0表示关,1表示开.Input第一行为数据......
  • POJ 2398(二分点集)
    DefaultToyStorageDescription在长方形(x1,y1)(x2,y2)中有n块板(保证与上下边相交),和m个点。现给出板和点的位置,求拥有相同点数的区域数、  Inpu......
  • POJ 2318(点集二分)
    DefaultTOYSDescription在长方形(x1,y1)(x2,y2)中有n块板(保证与上下边相交),和m个点。现给出板和点的位置,求各区域点数、  Input......
  • 流程控制语句和JavaScript语法练习99乘法表
    流程控制语句流程控制语句:1.if...else...2.switch:在java中,switch语句可以接受的数据类型:byteintshorchar枚举(1.5)string(1.7)3.while4.do.......
  • 616Javascript_语法_练习_99乘法表 and
    练习9*9乘法表<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>99乘法表</title><style>td{border:1pxs......
  • POJ 1825/2279(Young/Mr. Young's Picture Permutations-杨氏矩阵和钩子公式)
    给出一个n行的矩阵,每一行有a[i]个数,总共有sum个数,要求每一个位置的数必须比上面的数和左面的数大,求总方案数.杨氏矩阵又叫杨氏图表,它是这样一个矩阵,满足条件:(1)如果格子......
  • 九九乘法表
      j=1whilej<=9:i=1whilei<=j:print(f'{i}x{j}={i*j}',end='\t')i+=1print()j+=11x1=1   1x2=2   2x......
  • 裴蜀定理、Exgcd与乘法逆元
    目录裴蜀定理Exgcd扩展欧几里得算法例题:P5656,exgcd模板题裴蜀定理逆元并非对任何数存在……定理:\(ax+by=c\)有解\(\{x,y\}\)当且仅当\(c\)是\(\gcd(a,b)\)的倍......
  • 九九乘法表
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<math.h>intmain(){ intl=0; for(l=1;l<=9;l++) { inth=1; for(h=1;h<=l;......