切换到宽版
  • 10304阅读
  • 8回复

4.1.5(ariprog)求助 [复制链接]

上一主题 下一主题
离线rocket323
 
只看楼主 倒序阅读 0 发表于: 2006-07-12
Arithmetic Progressions

等差数列

译 by tim green

一个等差数列是一个能表示成a, a+b, a+2b,..., a+nb (n=0,1,2,3,...)
在这个问题中a是一个非负的整数,b是正整数。
写一个程序来找出在双平方数集合S中长度为n的等差数列。
双平方数集合是所有能表示成p2+q2的数的集合。

PROGRAM NAME: ariprog

INPUT FORMAT
第一行:    N(3<= N<=25),要找的等差数列的长度。
第二行:    M(1<= M<=250),搜索双平方数的上界0 <= p,q <= M。

SAMPLE INPUT (file ariprog.in)
5
7

OUTPUT FORMAT
如果没有找到数列,输出`NONE'。
如果找到了,输出一行或多行, 每行由于二个整数组成:a,b
这些行应该先按b排序再按a排序。
将不会有只多于10,000个等差数列。

SAMPLE OUTPUT (file ariprog.out)
1 4
37 4
2 8
29 8
1 12
5 12
13 12
17 12
5 20
2 24


这道题怎么搜索???严重求助!!
离线stevenjl

只看该作者 1 发表于: 2006-07-12
我第七个点5秒都超时,悲哀啊
Dream Walker...
离线rocket323
只看该作者 2 发表于: 2006-07-13
我的程序在本地机运行正确,而在usaco上却是216错误,它的标程也是这样~`~~~~这是为何?
离线stevenjl

只看该作者 3 发表于: 2006-07-13
216错误?贴出来看看
Dream Walker...
离线fjq514
只看该作者 4 发表于: 2006-12-03
是不是有什么比较好的方法 ? 是不是有什么规律?
离线fjq514
只看该作者 5 发表于: 2006-12-03
不知道哪位大虾指导一下
离线swj05652
只看该作者 6 发表于: 2006-12-03
216是什么错误?
离线fjq514
只看该作者 7 发表于: 2006-12-04
看看这个程序有没有什么问题:


uses sysutils;
const max=1000000;
var f1,f2:text;pf:array[0..max] of boolean; i,j,k,a,b,m,n:longint;
q,p,l:longint; t0:tdatetime;
begin
t0:=now;
assign(f1,'E:\os\pp\bin\go32v2\dengcha.in');
assign(f2,'E:\os\pp\bin\go32v2\dengcha.out');
reset(f1);
rewrite(f2);
readln(f1,a);
readln(f1,b);
close(f1);

n:=b*b+b*b;
m:=(n div (a-1))+1;
for i:= 1 to n do pf:=false;
  for i:=0 to b do
  for j:=0 to b do begin k:=i*i+j*j; pf[k]:=true;end;
 
  for i:= 1 to m do begin
    k:=1;

    repeat
    l:=k;
    q:=0;p:=0;
    repeat
    if pf[l] then begin l:=l+i; p:=p+1;end
    else   q:=1;
    until ((q=1) or (p=a));
    if p=a then writeln(f2,k,' ',i);
    k:=k+1;
    until (n-k-m<3);
      end;


    writeln(f2,'Runtime is ',(now-t0)*86400:0:2,' seconds.');
    close(f2);
    end.
离线bluesky
只看该作者 8 发表于: 2007-02-07
我也不知道怎么做啊!
有谁可以将AC的程序发上来look look??
快速回复
限100 字节
 
上一个 下一个