E. 【Level 0】循环

    Type: Default 1000ms 256MiB

【Level 0】循环

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

Description

  我们往往会遇到需要多次执行同一个操作的情形,例如在常量与变量一节中计算3.15363.153^6,假设要计算3.153203.153^{20},显然写十九个乘号来计算是十分不便的,因此我们需要用循环来操作。

  while循环的结构如下

while (exp) {
    // do something...
}

  只要exp的值为true,就执行一次花括号内(循环体)的内容,我们自然可以发现,如果exp一直为true,程序将一直重复不断地运行这一段代码。

  因此一般情况下,我们需要在循环体内修改,使exp的值发生变化,这样循环才能在完成任务后继续执行后续的代码。

  假设我们要计算1+2+...+100,这时结束条件就是x > 100

int x = 1, sum = 0;
while (x <= 100) {
    sum = sum + x;  // 也可以写成sum += x;
}

  为什么上面的代码是死循环?这是因为我们没有改变x的值,导致x <= 100一直为true,所以不停地执行sum += x;使得程序无法向下继续执行。因此我们要修改x,使得循环退出:

int x = 1, sum = 0;
while (x <= 100) {
    sum += x;
    x += 1;    // 也可以写成x++;
}

  这样,每次循环x都会增加1,最终当x101时表达式为false,退出循环。

  for循环与while循环等价:

for (expa; expb; expc) {
    // do something...
}

  进入循环前,执行expa,每次循环判断的表达式为expb,每次执行完循环体后,再执行一次expc。通常,我们在expa声明循环的临时变量,在expc对循环的临时变量进行修改,但并不一定要这样做。

  forwhile可以进行等价的转化,例如

int sum = 0;
for (int x = 1; x <= 100; x++) {
    sum += x;
}

  等价于

int x = 1, sum = 0;
while (x <= 100) {
    sum += x;
    x++;
}

Format

Input

  一个正整数n (n1000)n \space (n \leq 1000)

Output

  一个正整数,计算1+2+3+...+(n1)+n1+2+3+...+(n-1)+n的结果

  使用循环的方法求解

Samples

3
6

C++入门

Not Attended
Status
Done
Rule
IOI
Problem
8
Start at
2023-12-14 0:00
End at
2024-1-24 16:00
Duration
1000 hour(s)
Host
Partic.
24