TOJ 4689: Sawtooth

4689: Sawtooth 

Time Limit(Common/Java):1000MS/3000MS     Memory Limit:65536KByte
Total Submit: 26            Accepted:8

Description

 

 

给予一条直线,最多可以将一个无限大平面分为两块,而两条直线,最多可以将平面分为4块。嘛,稍稍提升些难度,若给予n个拥有m个锯齿的图形,最多能将平面分为几个区域呢?

 

 

Input

 

 

多组测试数组。每组测试数据含有两个数m、n(1<=m<=10000,2<=n<=10000),分别代表锯齿个数和图形的个数。

 

 

Output

 

 

每组输出仅含一行一个数,代表最多能将平面分割的个数。

 

 

Sample Input

 

2 1
2 2

Sample Output

2
19

Hint

 

如图为1个拥有2个锯齿的图形,则在例中2个拥有2个锯齿的图形最多可以将平面分割为如下19块。

(注意锯齿状的图形外侧两边为射线,即无限长,其余边均为有限长)

作为一个喜(tao)欢(yan)几何的人,我很难想象自己怎么把这道题做出来了,我就是感觉挺有意思的,就如饥似渴地想找他的通项公式,HDOJ有一道类似的HDU - 5047,但是没我们这个需要处理的内容多,那个是个固定两个锯齿的。今天看到具体数学,无聊在翻,发现第一章就出现

答案类似物,我特么好像不用那么死命得推?其实本来我的想法也是直线相交-损失的空间,然后再根据n个锯齿来调整内容反正锯齿对应的数量级是2n^2的,直线是n^2/2(即n*(n-1)/2)发下标记下,给后人留个思考方式。推通项公式真的也没有想象的那么难,三项就差不多了,毕竟你知道第一项的数量级

#include <stdio.h>
int main()
{__int64 m,n;
while(~scanf("%I64d%I64d",&m,&n)){
    printf("%I64d\n",(2*m*m)*n*n-(2*m*m-1)*n+1);
} 
    
    return 0;
}

 

转载于:https://www.cnblogs.com/BobHuang/p/6843394.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值