151 条题解
-
0violethill LV 10 @ 2009-10-03 07:37:42
第100题
纪念下
violet hill到此飘过——飘飘乎居士 -
02009-09-20 12:15:29@
直接找约数,判断后输出。。
-
02009-09-18 12:43:38@
一边AC
var n:longint;
s,i,t:longint;
begin
readln(n);
for i:=1 to (n div 2) do
begin
s:=0;t:=i-1;
repeat
t:=t+1;
s:=s+t;
until s>=n;
if s=n then writeln(i,' ',t);
end;
end. -
02009-09-17 18:18:36@
代公式 s=n*a[i]+n*(n-1)/2
第一重枚举a1,第二重枚举n(倒着来,n肯定比m/a[i]小但肯定比1大.,找到合适的就break,就不会超时)。
谁说在代码框里能AC的??我WA了三次... -
02009-09-13 18:30:18@
想复杂了,还快排
program p1302;
var m,k,i,k1,s:longint;
a,b:array[1..1000000] of longint;
procedure quicksort(s,t:longint);
var i,j,mid,t1:longint;
begin
i:=s;j:=t;mid:=a[(i+j) div 2];
repeat
while mid>a[i] do inc(i);
while mid -
02009-09-04 16:12:01@
var n,a,b,c,d,e,f,g,h,i,j,s:longint;
begin
readln(n);
for i:=1 to n div 2 do begin
j:=i;
s:=i;
while s -
02009-08-30 22:46:38@
看了看大家的题解。。怎么发现有人说会超时。。直接在代码框里排就能秒掉的题目诶。。
我们知道等差数列求和公式:(ai+aj)*(j-i+1)/2,设aj=ai+k,则可以化简为(2*ai+k)*(k+1)/2=M,再整理可以得到ai=(2*M/(k+1)-k)/2,而由ai>0知2*M>k*(k+1)>k^2,故k -
02009-08-29 12:46:20@
var n,a,b,c,d,e,f,g,h,i,j,s:longint;
begin
readln(n);
for i:=1 to n div 2 do begin
j:=i;
s:=i;
while s -
02009-08-28 23:58:33@
秒掉
-
02009-08-15 20:37:44@
var n,i,j,s:longint;
begin
read(n); i:=1;j:=2;s:=3;
while i -
02009-08-15 16:07:39@
这才是真正的难度1
-
02009-08-06 08:50:28@
好水啊……我用13行就秒了
-
02009-07-30 22:31:29@
Program zzz;
Type
Tindex = longint;
var
k,i : Extended;
t,m : Tindex;Begin
readln(m);
For t:=1 to m div 2 do
begin
i:=t;
k:=(1-2*i-sqrt((2*i-1)*(2*i-1)+8*m))/2;
if k=trunc(k) then
if k>1 then writeln(i:0:0,' ',i+trunc(k)-1:0:0);
k:=(1-2*i+sqrt((2*i-1)*(2*i-1)+8*m))/2;
if k=trunc(k) then
if k>1 then writeln(i:0:0,' ',i+trunc(k)-1:0:0);
end;
End. -
02009-07-29 18:09:39@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msvar n,i,j,k,kk,k1,k2:longint;
begin
i:=0;
readln(n);
for i:=n downto 2 do
begin
if i mod 2=0 then
begin
j:=i div 2;
if n mod i=j then
begin
k1:=(n-j) div i;
k2:=(n+j) div i;
if k1-j>0 then writeln(k1-j+1,' ',k2+j-1);
end;
end;
if i mod 2=1 then
begin
if n mod i=0 then
begin
k:=n div i;
j:=i div 2;
if k-j>0 then writeln(k-j,' ',k+j);
end;
end;
end;
end. -
02009-07-29 17:34:33@
楼下的那个装什么高斯公式!!!就是等差数列的求和公式啊 初中没学过?
-
02009-07-28 19:39:09@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms枚举数列长度,秒杀
-
02009-07-28 16:50:34@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msvar n,a,b,rs:longint;
begin
read(n);
for a:=1 to (n div 2)+1 do
begin
rs:=0;
for b:=a to (n div 2)+1 do
begin
rs:=rs+b;
if rs=n then writeln(a,' ',b);
if rs>=n then break;
end;
end;end.
-
02009-07-27 16:13:06@
var m,i,x,y,l,r,n:longint;
begin
read(m);
n:=m*2;
for i:=round(sqrt(n)) downto 2 do
if n mod i=0 then
begin
x:=i-1;
y:=n div i;
if (x>0) and (y>0) then
begin
r:=(x+y) div 2;
l:=(y-x) div 2;
if (l+r)*(r-l+1)=2*m then writeln(l,' ',r);
end;
end;
end. -
02009-07-25 08:46:30@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 25ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:25ms
program p1302;
var n,i,j,k,s:longint;
a:array[1..10000,1..2] of longint;
begin
fillchar(a,sizeof(a),0);
readln(n);
s:=0; k:=1;
for i:=1 to (n div 2+1) do
begin
s:=0;
for j:=i to (n div 2+1) do
begin
s:=s+j;
if s=n then begin a[k,2]:=j; a[k,1]:=i; inc(k); end;
if s>n then break;
end;
end;
for i:=1 to k-1 do
writeln(a,' ',a);
end.
穷举才是硬道理,裸裸的穷举,裸裸的AC。只可惜没有秒杀。 -
02009-07-16 08:17:14@
Wuuuu...超时了..