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
Hint
【数据规模】
40%t<=1000
100% t<=100000 a,b,c,d,e,f,g,h<=60i<=9223372036854775808
本题:
比较水,打一个点,然后就可以直接模拟了。然后也可以用高精度加快速幂写,就是复杂一点
var
a:array[1..9] of qword;
s:array[0..60] of int64;
t,i,j:longint;
ans:qword;
begin
s[0]:=1;
fori:=1 to 60 do
s[i]:=s[i-1]*2;
readln(t);
fori:=1 to t do
begin
ans:=0;
forj:=1 to 9 do
read(a[j]);
if(a[1]=60) and (a[2]=60) and (a[3]=60) and (a[4]=60) and (a[5]=60)
and (a[6]=60) and (a[7]=60) and (a[8]=60) and (a[9]=9223372036854775808)
thenbegin writeln('18446744073709551616'); continue; end;
ans:=s[a[1]]+s[a[2]]+s[a[3]]+s[a[4]]+s[a[5]]+s[a[6]]+s[a[7]]+s[a[8]]+a[9];
writeln(ans);
end;
end.
----------------------------------------------------------------------------------------------------------------------
Description
给出一个整数 ,你可以对 进行两种操作。
1、将x变成4x+3
2、将x变成8x+7
问,最少通过多少次操作,使得x是1000000007的倍数?
Input
一行,一个整数x(1<=x<=1000000006)。
Output
一行,表示最少的操作步数。保证答案不超过10^5。
【样例输入1】
125000000
【样例输出1】
1
【样例输入2】
281250001
【样例输出2】
2
【样例输入3】
18426114
【样例输出3】
58
【样例输入4】
705616876
【样例输出4】
100000
【数据约定】
对于50%的数据,答案不超过10
对于80%的数据,答案不超过1000
对于100%的数据,答案不超过100000
本题也是一个水题。一直乘2加一,然后就可以输出那个数乘二除以六,然后就可以有正解
var
s,a:qword;
i,j,ans:longint;
begin
readln(a);
s:=1000000007;
while(a mod s)<>0 do
begin
a:=a*2+1;
ans:=ans+1;
a:=a mod s;
end;
iftrunc(ans*2/6)<>ans*2/6 then writeln(trunc(ans*2/6)+1)
else writeln(ans*2/6:0:0);
end.
Description
给定三个点(不共线)的坐标,要求以这三个点为圆心做三个圆,圆两两不相交,不包含,问三个圆的直径和最大为多少。
Input
第一行为测试数据组数t。接下来t行每行6个数为坐标。
Output
T行,每行一个整数表示直径和(取下整)。
Sample Input
1
0 0 0 1 1 0
Sample Output
3
可以自己画图证明。最大的三个圆形直径就是等于三个点围成的三角形的周长。
var
a,b,c,d,e,f,t,i,j:longint;
b1,b2,b3:real;
begin
readln(t);
fori:=1 to t do
begin
b1:=0; b2:=0; b3:=0;
readln(a,b,c,d,e,f);
b1:=sqrt(sqr(a-c)+sqr(b-d));
b2:=sqrt(sqr(c-e)+sqr(d-f));
b3:=sqrt(sqr(a-e)+sqr(b-f));
writeln(trunc(b1+b2+b3));
end;
end.
----------------------------------------------------------------------------------------------------------------------
1782. Travel (Standard IO)
Description
给出一个有 个顶点条边的有向图,对于一条边长度为len的边有两种走法。
1、如果a和b可以互达,则走过这条边的时间为len
2、如果a和b不可以互达,则走过这条边的时间为2*len
现在给出一个k,问,从顶点1到顶点n,满足第二种走法不超过k次的最短时间是多少。
Input
第一行有3个整数n,m,k(1<=n<=100,1<=m<=10000,0<=k<=10),表示有n个顶点,m条边。
接下来有m行,每行有3个整数xi,yi,leni(1<=xi,yi<=n,1<=leni<=10000),表示长度为leni的有向边。
注意,两个点可能有多条边连接。
Output
一行一个整数,表示最短时间。
如果没有满足题目条件的路径,则输出-1
Sample Input
7 7 3
1 2 2
1 3 2
2 4 3
4 7 5
3 5 4
5 6 1
6 4 2
Sample Output
20
Hint
【数据约定】
对于30%的数据n<=10,m<=10,
对于100%的数据,如题目描述
本题打一个-1就可以有十分,我就不解释为什么了。。
正解就是两个弗洛伊德,至于程序嘛,你们自己脑补就好了,老是给程序对你们不好