86 条题解
-
0beakham LV 8 @ 2008-09-21 20:27:01
上次程序是刚编完,没时间调试,学校又有还原卡,所以才放上来的。
至于后面那东西......
纯熟好玩
正确程序:
var
m,n,i,j,k:longint;
a,b,c:array[0..300]of longint;
s:string;
e:boolean;
procedure chen(q:longint);
var
i,j:longint;
begin
for i:=m downto 1do
for j:=m downto 1do
begin
b[300-2*m+i+j]:=b[300-2*m+i+j]+c[i]*c[j];
b[299-2*m+i+j]:=b[299-2*m+i+j]+b[300-2*m+i+j]div 10;
b[300-2*m+i+j]:=b[300-2*m+i+j]mod 10;
end ;
end;
begin
readln(s);
for i:=1to length(s)do
a[300-length(s)+i]:=ord(s[i])-48;
m:=length(s)div 2+2;
for i:=1to m do
begin
e:=true;
while e do
begin
inc(c[i]);
if c[i]>=10
then k:=c[i]div 10;
c[i]:=c[i]mod 10;
j:=i;
while k0do
begin
dec(j);
c[j]:=c[j]+k;
k:=c[j]div 10;
c[j]:=c[j]mod 10;
end;
fillchar(b,sizeof(b),0);
chen(1);
for j:=(302-2*m)to(300-2*m+2*i)do
if a[j]b[j]
then break;
end;
dec(c[i]);
if c[i] -
02008-09-15 21:33:28@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 25ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:25ms高精写的我虚脱了 ,175行代码
-
02008-09-15 21:12:53@
要求的是N以内的被改变奇数次的灯的数量,也就是求N以内约数为奇数的数的数量,只有平方数才能满足约数为奇数个,所以只要求TRUNC(SQRT(N))就可以了.
可以用来练一下高精
涉及到的有高精乘高精,高精除单精(二分)和高精加高精..
-
02008-09-15 20:57:49@
program ss;
var n,m,i,c:real;
a:array[0..1001]of longint;
begin
read(n);
for i:=1 to n do
a[i]:=0;
for i:=1 to n do
for c:=1 to n do
if a[c] mod c = 0 then
begin
if a[c]=1 then
a[c]:=a[c]-1
else a[c]:=a[c]+1;
end;
c:=0;
for i:=1 to n do
if a[i]=1 then
c:=c+1;
write (c);
end.
请教高手
将a数组所有元素付为零处有问题 -
02008-09-15 20:18:44@
除了完全平方数的灯都是灭的
-
02008-09-15 18:30:37@
orz 教主
-
02008-09-15 16:31:27@
原题可转化为:
求一个x使得x^2 -
02008-09-15 16:24:53@
其效果就是正因数个数为奇数时亮
也就是说完全平方数亮,其它是暗的
-
02008-09-15 16:09:35@
a[0]:=(n[0]-1)div 2 +1;
tim(b,a,a);
for i:= a[0] downto 1 do begin
k:=10;
repeat
dec(k);
add(c,a,change(i,k));
tim(c,c,c);
until small(c,n);
a[i]:=k;
b:=c;
end; -
02008-09-15 15:43:20@
c++可不可以用“~“符号来做???
-
02008-09-15 14:27:02@
x(x+2)>=n>(x-1)(x+1)
求出x既为解 -
02008-09-15 13:48:03@
0ms
-
02008-09-15 13:37:32@
无效数字格式是什么意思
-
02008-09-15 10:46:05@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 9ms
├ 测试数据 10:答案正确... 150ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:159ms -
02008-09-15 10:40:05@
还可以用迭代来做
设x=m-a
则(x+a)^2=n
x(x+2a)=n-a^2
n-a^2
x=---|---|---|---|-
x+2a
用这个迭代公式可以做的,效率似乎更高一点。
a可以取10^((length(N)+1)div 2 - 1)
详见 pascal程序设计基础 迭代部分的示例
记得最后结果为x(上取整)+a -
02008-09-15 10:29:55@
二分枚举
-
02008-09-15 08:27:20@
求出n的算数平方根的整数部分即可
-
02008-09-15 07:33:38@
你们是由答案 算平方比较
我是用得数开方运算
……
-
02008-09-15 07:21:52@
高精+二分
委琐
居然算错了二分起始范围。。。。。。。。。 -
02008-09-15 01:22:29@
逐位枚举即可...
{大家动作真快}