当前位置: 代码迷 >> 综合 >> 2042. 【2016.5.21普及组模拟】SuperPow
  详细解决方案

2042. 【2016.5.21普及组模拟】SuperPow

热度:101   发布时间:2023-10-09 12:45:49.0

题目描述

众所周知,a^b表示a的b次幂。例如:2^3=2*2*2=8。
一天,某只肥皂很无聊,于是在纸上写了形如a^b的式子玩。FL见到了,过来一起玩。突然,FL脑洞一开:我给你普及一个符号“^^”,叫做超级幂。a^^b表示a^(a^(a^(a^a^(...)))),共b个a。例如2^^3=2^(2^2)=2^4=16。那么你知道a^^b的个位数是多少么?
肥皂表示一脸懵逼,于是一旁看热闹的YDL出现了,随手写了一个式子:(a1^^b1)*(a2^^b2)*(a3^^b3)........(an^^bn),保证ai的个位数不等于2或4或8。说,请求出这个式子的个位数。
肥皂和FL两脸懵逼。现在FL只好想你求助了。
注意:a^^0=1,表示有0个a,  例如: 3^^0=1
题解:
有规律的,尾数不会出现2,4,8,而尾数是1,5.6.9就乘以尾数,只剩下3和7,自己推一推规律。
代码:
var
  i,j,m,n,ans,x,y,z:longint;
begin
  readln(n);
  for i:=1 to n do
    begin
      ans:=1;
      readln(m);
      for j:=1 to m do
        begin
          read(x,y);
          z:=x mod 10;
          if y=0 then ans:=ans*1
          else
          if y=1 then
            ans:=ans*x mod 10
          else
          if (z=5)or(z=6)or(z=9) then
            ans:=ans*x mod 10
          else
          if z=3 then
            if x mod 4=1 then
              ans:=ans*3 mod 10
            else
              ans:=ans*7 mod 10
          else
          if z=7 then
            if x mod 4=1 then
              ans:=ans*7 mod 10
            else
              ans:=ans*3 mod 10;
         end;
      writeln(ans);
    end;
end.