如果发现广告等破坏行为,请尽量将条目恢复到较早的版本而不是把相应内容直接删除,谢谢合作。

URAL/1068

来自"NOCOW"

跳转到: 导航, 搜索
VAR
  i,n:longint;
  sum:int64;
BEGIN
  readln(n);
    if n>=1 then
      for i:=1 to n do inc(sum,i);
    if n<1 then
      for i:=n to 1 do inc(sum,i);
  writeln(sum);
END.
program sum;
 
var
 
sumn:int64;
 
n,i:longint;
 
begin
 
sumn:=0;
 
readln(n);
 
if n>1 then{分清楚downto和to}
 
begin
 
for i:=n downto 1 do
 
sumn:=sumn + i;
 
end
 
else begin
 
for i:= n to 1 do
 
sumn:=sumn +i;
 
end;
 
if n=1 then sumn:=1;
 
write(sumn);
 
end.


Here may be a more simple and clear solution:

var i:longint;
    n,ans:int64;
begin
  readln(n);
  if n<1 then 
      for i:=n to 1 do inc(ans,i) else
      for i:=1 to n do inc(ans,i);
  writeln(ans);
end.
//反正是等差数列,直接用公式吧,O(1)的。
var
  n:longint;
begin
  readln(n);
  writeln((n+1)*(abs(n-1)+1) div 2);
end.

//跟楼上大相径庭 只是无聊 分类讨论 program tt;

 var sum,n:longint;
 begin
   readln(n);
   if n>=1
      then writeln((1+n)*n div 2)
      else writeln((1+n)*(2-n) div 2);
 end.  
 by[黥]
个人工具