1249 三角形 简单递推 / 数论

Posted 幽殇默

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1249 三角形 简单递推 / 数论相关的知识,希望对你有一定的参考价值。

在这里插入图片描述

http://acm.hdu.edu.cn/showproblem.php?pid=1249

我们要知道的是要想分成的区域越多,那么交点必须越多
当我们的三角形有2个的时候。
固定一个三角形,画另一个三角形,要想让其分成的区域越多,故边穿过的线的个数必须多。
一条线最多穿过 2条线,三角形有三条边故 一共有 3*2= 6个交点
s[2] =s[1] +6 =8;
在这里插入图片描述
当我们的三角形有3个的时候。
在这里插入图片描述
综上可以得到: a[i]=a[i-1]+6 x (i-1)

#include<cstdio>
#include<iostream>
using namespace std;
int a[10005];
int main(void)
{
	int t; cin>>t;
	a[1]=2;
	for(int i=2;i<=10000;i++)
	{
		a[i]=a[i-1]+6*(i-1);
	}
	while(t--)
	{
		int b; cin>>b;
		cout<<a[b]<<endl;
	}
	return 0; 
} 

当然你可以推出公式是 f(n)=3n(n-1)+2 直接套公式

以上是关于1249 三角形 简单递推 / 数论的主要内容,如果未能解决你的问题,请参考以下文章

随笔导航

⭐算法入门⭐《递推 - 二维》简单01 —— LeetCode 118. 杨辉三角

UVa 1645 Count (递推,数论)

PAT 数列的片段和简单数论

Luogu5307 [COCI2019] Mobitel 数论分块递推

手把手带你刷好题—— 62.数字三角形(递推简单DP)