40 条题解
-
2
^ambition LV 8 @ 6 年前
公式很容易推出来,主要是在n=3的时候容易超时,因此对于n=3的情况要用快速幂。整个程序套高精度模板即可。代码比较长,主要是高精度那块长。
-
216 年前@
推公式……
设第k个集合第一个元素是h(k),最后一个元素是t(k),显然第k个集合元素总数s(k)=t(k)-h(k)+1,又有t(k)=t(k-1)+t(k-1)-1=2t(k-1)-1;hk=2h(k-1)+1;所以通项t(k)=2^(k-1)*(n-1)+1;h(k):=2^k-1;s(k)=t(k)-h(k)+1;带入整理。
然后设sum(k)=s(1)+s(2)……s(k);2sum(k):=2s(1)+2s(2)……2s(k);
两边做差,整理得sum=(n-3)*2^k+3*(k+1)-n;
然后二分枚举k,计算2^k时再用快速幂就行了。 -
115 年前@
不玩了...用了最直接的模拟.....
写了200+行,都压到1000000000了还那么慢....ORZ flower 和 怪盗基德 啊~~
注意:高精运算总计算出来的数值可能不只10^1000....
-
04 年前@
-
07 年前@
虽然推出了算式,但还是无法AC...应该是精度问题..
5,6:10 过不去.. -
015 年前@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
巨猥琐的!!!!!!!!
想吐血 -
015 年前@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 150ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:150msVAG真不给面子。。。。。。
一开始用longint压到100000000进制,可恶的VAG竟然给我超时,一气之下用了int64压到了1000000000000000000进制(极限了),VAG终于给AC。。。。。。
我代码比较简短,才138行的3.30KB,输出真是赏心悦目。write(k[k[0]]);
for i:=k[0]-1 downto 1 do
if k[i]>99999999999999999 then write(k[i]) else
if k[i]>9999999999999999 then write('0',k[i]) else
if k[i]>999999999999999 then write('00',k[i]) else
if k[i]>99999999999999 then write('000',k[i]) else
if k[i]>9999999999999 then write('0000',k[i]) else
if k[i]>999999999999 then write('00000',k[i]) else
if k[i]>99999999999 then write('000000',k[i]) else
if k[i]>9999999999 then write('0000000',k[i]) else
if k[i]>999999999 then write('00000000',k[i]) else
if k[i]>99999999 then write('000000000',k[i]) else
if k[i]>9999999 then write('0000000000',k[i]) else
if k[i]>999999 then write('00000000000',k[i]) else
if k[i]>99999 then write('000000000000',k[i]) else
if k[i]>9999 then write('0000000000000',k[i]) else
if k[i]>999 then write('00000000000000',k[i]) else
if k[i]>99 then write('000000000000000',k[i]) else
if k[i]>9 then write('0000000000000000',k[i]) else
write('00000000000000000',k[i]);
writeln; -
016 年前@
高精减……不熟悉,WA了N次...T_T
-
016 年前@
第5个点cheat
-
016 年前@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 9ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:9msdragon上测的,效率不错,不过。。代码超级恶心。。6kb。。编的要吐血了
program pro3;
const maxn =1100;
maxnum =10000000; {7}
type node=array[0..1,0..maxn] of int64;
var n :longint;
num,Read_in :array[0..maxn] of int64;
f,g :node;
ans :longint;
Tot,t0 :array[0..maxn] of int64;
n0 :array[1..20,0..maxn*100] of int64;
n1 :array[1..20] of int64;
ans_out,c :array[0..maxn*100] of int64;function max(i,j:longint):longint;
begin
if i>j then exit(i) else exit(j);
end;function work(i:longint):longint;
begin
if i mod 7=0 then exit(i div 7)
else exit(i div 7+1);
end;procedure swap(var i,j:int64);
var t:int64;
begin
t:=i; i:=j; j:=t;
end;procedure cheng(a,b,c:longint);
var i,j:longint;
begin
for i:=1 to n0 do
for j:=1 to n0[c,0] do
begin
inc(n0[a,i+j-1],n0*n0[c,j]);
inc(n0[a,i+j],n0[a,i+j-1] div maxnum);
n0[a,i+j-1]:=n0[a,i+j-1] mod maxnum;
end;
n0[a,0]:=n0+n0[c,0];
if n0[a,n0[a,0]]=0 then dec(n0[a,0]);
end;procedure cheng_num(x:longint);
var i,j:longint;
begin
fillchar(c,sizeof(c),0);
for i:=1 to ans_out[0] do
for j:=1 to n0[x,0] do
begin
inc(c,ans_out[i]*n0[x,j]);
inc(c,c div maxnum);
c:=c mod maxnum;
end;
c[0]:=ans_out[0]+n0[x,0];
if c[c[0]]=0 then dec(c[0]);
ans_out:=c;
end;procedure solve_3(a,b:longint);
var i:longint;
begin
n1[1]:=1; n0[1,1]:=2; n0[1,0]:=1;
for i:=2 to 16 do
begin
n1[i]:=n1*2;
cheng(i,i-1,i-1);
end;
ans_out[1]:=1; ans_out[0]:=1;
while a0 do
begin
for i:=16 downto 1 do
if n1[i] -
016 年前@
昨天比赛的时候就猜到有
3 90000
就跟本地算出答案贴上去的不料当时数组开小了,居然要9k位,我就弄到5k位
-
016 年前@
n=3时要特判
其他和题解一模一样,但是我就纳闷TN的程序效率好高...我的就不行,慢的要1s多
Orz tangky...
(话说C++的效率...还是用pascal写好) -
016 年前@
第4题在1422
-
016 年前@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 462ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:462ms
慢了。。。比赛是用QWORD50分! -
016 年前@
过的比较委琐。。
比赛的时候80分。。
第五个点是3 90000
高精压位很难弄到0S
这点楼下正解
建议Cheat
不过Cheat貌似也有难度
数有几千位长
从汤牛那问来的
第五个点答案是2^30000+1
所以。。。 -
016 年前@
第5点只能快速幂才能0ms
-
016 年前@
我过了,太好了,N=3时套用MASON数的程序,其他简单
-
016 年前@
让我过去吧……阿门……
-
016 年前@
数据很弱
第五个点直接蒙出来 -
016 年前@
LX正解.
超时的试下这个数据 3 90000