纪中暑假培训: Data 2 密码 (Standard IO)

2018.07.07【2018提高组】模拟C组

密码 (Standard IO)

题目:

在浩浩茫茫的苍穹深处,住着上帝和他的神仆们,他们闲谈着下界的凡人俗事,对人世间表现的聪明智慧,大加赞赏。今天他们正在观赏大地风光人情之际,忽然从遥远的东海之滨传来一阵欢笑声,上帝纵目望去,只见中山纪念中学内聚集了全中山市的中小学精英学生,他们要干什么呢?
原来他们都在做一种破译密码的游戏,人们发现:将密码棒上的数字全部相乘,就是开启天庭司粮库密码锁的密码。
如:12×34×56=22848,则22848就是一组有效的密码。
“太简单了!”人们高呼起来,继续探索着。
“这不过是早期的密码系统而已。”上帝轻蔑地环顾着神仆们说道。
可是,当人们演算了123×456×789=44253432后,上帝的神色喀什不对了,要知道,44253432是一个特别的数字,这可是天庭的机密,是谁将这些机密泄露给世人的呢?
于是,上帝搬出一张牌,对司粮库主管得墨忒耳说:“将这张牌打出去,看看他们还逞能不?”
这是天庭的其中一张王牌,但平凡得很,只不过将密码的位数增大而已,可是难就难看在看到文件:password.in中的数字后,必须在1秒内将密码输出到文件:password.out中,否则这组密码就失效了。
上帝还是仁慈的,没有将更难得牌打出来,他想把天庭的粮食恩慈人间,但他绝不会将好处给那些不动脑子的人。现在请你解开天庭司粮库密码锁的密码,帮助人们获得天庭恩赐的粮食。

输入输出:

Input

输入文件password.in的第一行只有一个正整数n,表示密码共有n个乘积因子。
第二行至第n+1行共n行,每行有一个小于1×1024的正整数。这n个数均为密码的乘积因子。

Output

输出文件password.out只有一行,该行只有一个正整数,为求得的密码值。

Sample Input

3
12
34
56

Sample Output

22848

【数据限制】
30%的数据,1≤n≤6,且输入的每个乘积因子均小于1000。
70%的数据,1≤n≤20。
100%的数据,1≤n≤100。

思路:高精度乘高精度。

var
 i,j,n,m:longint;
 s1,s2:ansistring;

procedure gjd(n1,n2:ansistring);

var
  a,b,c:array [1..50000] of longint;
  lena,lenb,lenc,i,j,x:longint;
  ss:ansistring;
begin
  fillchar(c,sizeof(c),0);
  s1:='';
  lena:=length(n1);
  lenb:=length(n2);
  for i:=1 to lena do a[lena-i+1]:=ord(n1[i])-48;
  for i:=1 to lenb do b[lenb-i+1]:=ord(n2[i])-48;
   for i:=1 to lena do
   begin
   x:=0;
      for j:=1 to lenb do
      begin
      c[i+j-1]:=a[i]*b[j]+x+c[i+j-1];
      x:=c[i+j-1] div 10;
      c[i+j-1]:=c[i+j-1] mod 10;
      end;
   c[i+j]:=x;
   end;
  lenc:=lena+lenb;
  while (c[lenc]=0) and (lenc>1) do dec(lenc);
  for i:=lenc downto 1 do begin
                          str(c[i],ss);
                          s1:=s1+ss;
                          end;
end;

begin
 readln(n);
 readln(s1);
 for i:=2 to n do
  begin
   readln(s2);
   gjd(s1,s2);
  end;
 writeln(s1);
end.

猜你喜欢

转载自blog.csdn.net/g2523054231/article/details/80951235
今日推荐