UVA 10790 How Many Points of Intersection?

本文介绍了一道经典的UVA算法题目-UVA-10790,该题要求计算由上线下线相连形成的交点数量。通过分析发现,问题可以转化为求等差数列之和的问题,最终给出了简洁高效的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UVA-10790

题意:给出n,m,表示上面一条线有n个点,下面有m个点,上下的点相互连接,求交点的数量。
解题思路:先把上面的点摆好,下面第一个个点进去有 0 个交点,第二个点进去有 n-1 + n-2 + n-3 ……+1个交点,第三个点进去有 2*( n-1 + n-2 + n-3 + ……+ 1) ,到第m个进去有 (m-1)*(1+2+……+n-1) 。和为(1+2+3+……+n-1)*(1+2+3+……+m-1) 。套等差数列球和。

/*************************************************************************
    > File Name: UVA-10790.cpp
    > Author: Narsh
    > 
    > Created Time: 2016年07月15日 星期五 09时13分16秒
 ************************************************************************/

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
int main () {
    long long n,m,num=0;
    while (cin>>n>>m && n+m) {
        printf("Case %lld: ",++num);
        cout<<n*(n-1)*m*(m-1)/4LL<<endl;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值