讨论 / DP
mc12 2010-10-28 01:30:00
点我顶贴 收藏 删除
SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER SUPER

EASY DP!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

#1 will@2008-04-17 04:16:00
回复 删除
截至2008年4月17日19:15:00,你还没过这道题呀。

即使你是大牛,也别老刺激我们,好不好?

#2 我是天才他哥@2008-04-18 22:08:00
回复 删除
NOIP PJ组题目。。。

过了也不是大牛

#3 fjxmlhx@2008-04-18 23:30:00
回复 删除
DP?高精度+查找.
#4 wish@2008-04-19 06:39:00
回复 删除
这种 PJ 组题(还是很老的),即使AC了又算什么牛~

不AC才说明问题。

program p14(input, output);

type

HugeInt = array [1..300] of longint;

var

W: boolean;

S: string;

k, Current, t, i, j: longint;

n, Cycle, Factor, CurrentFactor: HugeInt;

operator * (HugeFactor1, HugeFactor2: HugeInt) ResultFactor: HugeInt;

var

i, j: longint;

begin

fillchar(ResultFactor, sizeof(ResultFactor), 0);

for i := 1 to k do

begin

for j := 1 to k do

inc(ResultFactor[i + j - 1], HugeFactor1[i] * HugeFactor2[j]);

if ResultFactor[i] > 9 then

begin

inc(ResultFactor[i + 1], ResultFactor[i] div 10);

ResultFactor[i] := ResultFactor[i] mod 10

end

end

end;

operator * (HugeFactor: HugeInt; SmallFactor: longint) ResultFactor: HugeInt;

var

i: longint;

begin

fillchar(ResultFactor, sizeof(ResultFactor), 0);

for i := 1 to k do

begin

inc(ResultFactor[i], HugeFactor[i] * SmallFactor);

if ResultFactor[i] > 9 then

begin

inc(ResultFactor[i + 1], ResultFactor[i] div 10);

ResultFactor[i] := ResultFactor[i] mod 10

end

end

end;

operator = (C1, C2: HugeInt) ResultBool: boolean;

var

i: longint;

begin

for i := 1 to Current do

if C1[i] <> C2[i] then

begin

ResultBool := false;

exit

end;

ResultBool := true

end;

begin

fillchar(n, sizeof(n), 0);

fillchar(Cycle, sizeof(Cycle), 0);

readln(S);

t := pos( , S);

for i := t - 1 downto 1 do

n[t - i] := ord(S[i]) - ord(0);

k := 0;

for i := t + 1 to length(S) do

k := k * 10 + ord(S[i]) - ord(0);

Cycle[1] := 1;

Factor := n;

CurrentFactor := Factor;

for Current := 1 to k do

begin

i := 0;

while (CurrentFactor * n <> n) and (i <= 10) do

begin

inc(i);

CurrentFactor := CurrentFactor * Factor

end;

if i > 10 then

begin

writeln(-1);

halt

end;

Cycle := Cycle * (i + 1);

Factor := CurrentFactor

end;

W := false;

for i := 300 downto 1 do

if W then

write(Cycle[i])

else if Cycle[i] > 0 then

begin

write(Cycle[i]);

W := true

end;

writeln

end.

#5 will@2008-04-21 04:45:00
回复 删除
哦哦……更受刺激
#6 Zx.MYS@2008-08-28 02:01:00
回复 删除
……仰望4L代码中……
#7 Jollwish@2008-08-28 05:34:00
回复 删除
嗯?

看不懂

operator * (HugeFactor1, HugeFactor2: HugeInt) ResultFactor: HugeInt是啥东东?

#8 Zx.MYS@2008-09-06 05:36:00
回复 删除
重载运算符……

这里貌似就是把*改成高精度运算

(我说的没错吧?)

#9 liye14@2010-03-30 01:46:00
回复 删除
..........................
#10 j1031hg@2010-10-27 22:50:00
回复 删除
我想我还是大菜

查看更多回复
提交回复