求和 sum

来源:互联网 发布:担保行业 知乎 编辑:程序博客网 时间:2024/06/12 23:45


<span style="font-family: Arial, Helvetica, sans-serif;">const</span>
 maxn=100000;var a:array [1..maxn] of longint; i,j,n,m,p,s,tot:longint;begin assign(input,'sum.in'); reset(input); assign(output,'sum.out'); rewrite(output); readln(n); while 1=1 do begin  inc(i);  s:=s+i;  if s<n then continue;  if s=n then  begin   writeln(i);   break;  end;  if s>n then  begin   if (s-n) mod 2=1 then continue;   p:=s-n;   for j:=i downto 1 do    if (j*2)<=p then    begin     inc(tot);     a[tot]:=j;     p:=p-j*2;    end;   if p=0 then   begin    writeln(i);    break;    end;   tot:=0;  end; end; for i:=tot downto 1 do  writeln(a[i]); close(input); close(output);end.hjy
一开始全部加起来,如果比要求的大就可以判断,如果差是偶数,那么就一定可以的。


我的程序还复杂了。。。。。



1 0