Description
无
Input
输入的第一行为一个整数t。
接下来t行,每行包含九个自然数。
Output
输出t行
每行一个整数,表示2^a+2^b+2^c+2^d+2^e+2^f+2^g+2^h+i。
Sample Input
1
21 30 0 0 0 0 0 0 2147483647
Sample Output
3223322629
Data Constraint
Hint
【数据规模】
40% t<=1000
100% t<=100000 a,b,c,d,e,f,g,h<=60 i<=9223372036854775808
正解
刚看到题目被题目描述吓了一大跳,后来又被极限数据吓到了,不过,仔细想来,还是so easy的!
我们可以发现9223372036854775808刚好是int64(long long)的上限+1
于是 直接暴力pascal用qword,C++用unsigned long long。
不过多出来的需要特(da)判(biao)一下。
不过如果怕空超的话,也可以用高精度+快速幂(不过可能会时超)
CODE
var
a,pow:array[0..60]of int64;
i,t,j:longint;
k,ans:qword;
p:boolean;
begin
readln(t);
pow[0]:=1;
for i:=1 to 60 do pow[i]:=pow[i-1]*2;
for i:=1 to t do begin
ans:=0;
p:=true;
for j:=1 to 8 do begin
read(a[j]);
if a[j]<>60 then p:=false;
end;
read(k);
if (p=true)and(k=9223372036854775808) then begin
writeln('18446744073709551616');
continue;
end;
for j:=1 to 8 do
ans:=ans+pow[a[j]];
writeln(ans+k);
end;
end.