POJ 2924 Gauß in Elementary School(我的水题之路——n到m的连和)

Gauß in Elementary School
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 7873 Accepted: 3530

Description

Johann Carl Friedrich Gauß (1777 – 1855) was one of the most important German mathematicians. For those of you who remember the Deutsche Mark, a picture of him was printed on the 10 – DM bill. In elementary school, his teacher J. G. Büttner tried to occupy the pupils by making them add up the integers from 1 to 100. The young Gauß surprised everybody by producing the correct answers (5050) within seconds.

Can you write a computer program that can compute such sums really quickly?

Given two integers n and m, you should compute the sum of all the integers from n to m. In other words, you should compute

Input

The first line contains the number of scenarios. Each scenario consists of a line containing the numbers n and m (−109 ≤ n ≤ m ≤ 109).


Output

The output for every scenario begins with a line containing “Scenario #i:”, where i is the number of the scenario starting at 1. Then print the sum of all integers from n to m. Terminate the output for the scenario with a blank line.

Sample Input

3
1 100
-11 10
-89173 938749341

Sample Output

Scenario #1:
5050

Scenario #2:
-11

Scenario #3:
440625159107385260

Source

TUD Programming Contest 2006, Darmstadt, Germany

求从n到m的所有元素之和。

用__int64,套用连和公式:
sum = (n+m) * (m - n) / 2;

注意点:
1)输入输出格式%I64d。
2)n、m也要用__int64类型。

代码(1AC):
#include <cstdio>
#include <cstdlib>
#include <cstring>

int main(void){
    int ii, casenum;
    __int64 n, m, i;
    __int64 sum;

    scanf("%d", &casenum);
    for (ii = 1; ii <= casenum; ii++){
        scanf("%I64d%I64d", &n, &m);
        if (n > m){
            i = m;
            m = n;
            n = i;
        }
        sum = (n + m) * (m - n + 1) / 2;
        printf("Scenario #%d:\n%I64d\n\n", ii, sum);
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值