104 条题解
-
0qscesz123 LV 8 @ 2009-09-19 19:41:29
什么世道
一定要用字符串读入?!
汗……
害我交了n次 -
02009-09-19 17:42:07@
瀑布汗!!!
-
02009-09-17 20:10:05@
哥切的不是题,是寂寞。
-
02009-09-13 11:26:58@
program p1032;
type arr=array[0..1000] of longint;
var
i,j,k,l,m,n:longint;
cn,a,d,dt,b:arr;
s:string;
procedure mul(var d:arr;a:arr);
var
i,j,t:longint;
c:arr;
begin
fillchar(c,sizeof(c),0);
for i:=1 to k do
for j:=1 to k-i+1 do
inc(c,d[i]*a[j]);
for i:=1 to k do
begin
inc(c,c[i] div 10);
c[i]:=c[i] mod 10;
end;
d:=c;
end;
begin
readln(s);
l:=pos(' ',s);
fillchar(a,sizeof(a),0);
for i:=l-1 downto 1 do
val(s[i],a[l-i],m);
a[0]:=l-1;
val(copy(s,l+1,length(s)),k,m);
cn[0]:=1;cn[1]:=1;
d:=a;
for i:=1 to k do
begin
m:=0;
b:=a;
fillchar(dt,sizeof(dt),0);dt[1]:=1;
repeat
inc(m);
mul(b,d);
mul(dt,d);
until (m>10) or (b[i]=a[i]);
if m>10 then break;
for j:=1 to cn[0] do cn[j]:=cn[j]*m;
for j:=1 to cn[0] do
begin
inc(cn[j+1],cn[j] div 10);
cn[j]:=cn[j] mod 10;
end;
if cn[cn[0]+1]>0 then inc(cn[0]);
d:=dt;
end;
if m>10
then write(-1)
else for i:=cn[0] downto 1 do write(cn[i]);
writeln;
end. -
02009-09-10 23:47:59@
是我太垃圾、、
-
02009-08-26 11:37:17@
Accepted 有效得分:100 有效耗时:1148ms
写得太丑了。 -
02009-08-25 22:56:30@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 9ms
├ 测试数据 07:答案正确... 41ms
├ 测试数据 08:答案正确... 25ms
├ 测试数据 09:答案正确... 56ms
├ 测试数据 10:答案正确... 56ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:187ms
好慢啊。高精度加法+高精度乘法+倍增法=崩溃
乘法只要保存K位就可以,不然超时等着你。
-
02009-08-13 10:42:36@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|---|---|---|
用楼上讲过的方法,同时使用快速幂等方法优化,然后如果人品好遇上puppy,那么就是秒杀!!! -
02009-08-09 23:17:27@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 9ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:9msCongratulations!!10AC~~
-
02009-07-31 09:51:58@
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms测了6次
改了6!次
达到了秒杀的效果高精的优化很重要
因为位数只到k
因此与k无关的可以统统卡掉 -
02009-07-19 09:20:22@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 56ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 88ms
├ 测试数据 07:答案正确... 103ms
├ 测试数据 08:答案正确... 88ms
├ 测试数据 09:答案正确... 119ms
├ 测试数据 10:答案正确... 150ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:604ms我的怎么这么慢。。囧rz...
-
02009-07-17 18:06:56@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 9ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 25ms
├ 测试数据 10:答案正确... 41ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:75ms
世上最难题,我想了五六个晚上!!!
╮(╯▽╰)╭
楼下的,我过了啊 -
02009-08-12 11:12:37@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 25ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 25ms
├ 测试数据 10:答案正确... 41ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:91ms过了哟 (*^__^*) 嘻嘻…… 虽然不是秒杀%…
交了7次。。。题解
http://chengchen2008.blog.163.com/blog/static/28346475200971211728508/ -
02009-07-10 10:32:35@
沙茶题留名……
-
02009-07-02 16:18:02@
汗....交了4次才AC..第三次居然交了没有在FP里保存的半成品.......-_-|||.....第680个AC..~~特此纪念..`~
-
02009-06-04 21:05:06@
const
max=101;
type
rec=record
len:integer;
num:array[0..max] of integer;
end;
var
n,ans,di,ji,temp:rec;
i,k:integer;procedure init;
var
s,s1:string;
begin
readln(s);
s1:=copy(s,1,pos(' ',s)-1);
delete(s,1,pos(' ',s));
n.len:=length(s1);
val(s,k);
for i:=1 to n.len do
n.num[n.len-i+1]:=ord(s1[i])-48;
if n.len>k then n.len:=k;
end;procedure gjdcf(var a:rec;b:rec);
var
i,j,m:integer;
begin
for i:=a.len downto 1 do
begin
for j:=b.len downto 2 do
begin
m:=i+j-1;
if m9) do
begin
a.num:=a.num+a.num[i] div 10;
a.num[i]:=a.num[i] mod 10;
inc(i);
end;
a.len:=i;
end;procedure dfs(t:integer);
begin
if t=1 then
begin
di:=temp;
exit;
end;
dfs(t div 2);
gjdcf(di,di);
if t mod 2=1 then gjdcf(di,temp);
end;procedure work;
var
i,ci:integer;
begin
di:=n;
fillchar(ans,sizeof(ans),0);
ans.len:=1;
ans.num[1]:=1;
ci:=0;
for i:=1 to k do
begin
ji:=n;
ci:=0;
while (ji.num[i]n.num[i]) or (ci=0) do
begin
gjdcf(ji, di);
inc(ci);
if ci>10 then
begin
writeln(-1);
halt;
end;
end;
ch(ans,ci);
temp:=di;
dfs(ci);
end;
end;begin
init;
work;
for i:=ans.len downto 1 do
write(ans.num[i]);
writeln;
end. -
02009-03-28 21:12:07@
此乃好题也!
150题纪念.. -
02009-03-02 16:42:12@
const
max=101;
type
rec=record
len:integer;
num:array[0..max] of integer;
end;
var
n,ans,di,ji,temp:rec;
i,k:integer;procedure init;
var
s,s1:string;
begin
readln(s);
s1:=copy(s,1,pos(' ',s)-1);
delete(s,1,pos(' ',s));
n.len:=length(s1);
val(s,k);
for i:=1 to n.len do
n.num[n.len-i+1]:=ord(s1[i])-48;
if n.len>k then n.len:=k;
end;procedure gjdcf(var a:rec;b:rec);
var
i,j,m:integer;
begin
for i:=a.len downto 1 do
begin
for j:=b.len downto 2 do
begin
m:=i+j-1;
if m9) do
begin
a.num:=a.num+a.num[i] div 10;
a.num[i]:=a.num[i] mod 10;
inc(i);
end;
a.len:=i;
end;procedure dfs(t:integer);
begin
if t=1 then
begin
di:=temp;
exit;
end;
dfs(t div 2);
gjdcf(di,di);
if t mod 2=1 then gjdcf(di,temp);
end;procedure work;
var
i,ci:integer;
begin
di:=n;
fillchar(ans,sizeof(ans),0);
ans.len:=1;
ans.num[1]:=1;
ci:=0;
for i:=1 to k do
begin
ji:=n;
ci:=0;
while (ji.num[i]n.num[i]) or (ci=0) do
begin
gjdcf(ji, di);
inc(ci);
if ci>10 then
begin
writeln(-1);
halt;
end;
end;
ch(ans,ci);
temp:=di;
dfs(ci);
end;
end;begin
init;
work;
for i:=ans.len downto 1 do
write(ans.num[i]);
writeln;
end. -
02009-03-01 10:20:38@
答案也是高精度啊。
WA在此了。 -
02009-02-25 22:08:07@
不想多说什么了,做得快哭出来了……