寒假2019培训:[BZOJ2467] [中山2010] 生成树

本文介绍了一个关于五角形圈生成树计数的问题,详细解释了如何通过选择特定边并应用数学公式来计算特定大小五角形圈的不同生成树数量。文章提供了具体的算法实现,包括输入和输出格式,以及示例数据。

生成树

题目描述

有一种图形叫做五角形圈。

一个五角形圈的中心有1个由n个顶点和n条边组成的圈。在中心的这个n边圈的每一条边同时也是某一个五角形的一条边,一共有n个不同的五角形。这些五角形只在五角形圈的中心的圈上有公共的顶点。如图0所示是一个4-五角形圈。

在这里插入图片描述
  现在给定一个n五角形圈,你的任务就是求出n五角形圈的不同生成树的数目。还记得什么是图的生成树吗?一个图的生成树是保留原图的所有顶点以及顶点的数目减去一这么多条边,从而生成的一棵树。

注意:在给定的n五角形圈中所有顶点均视为不同的顶点。

输入格式

输入包含多组测试数据。

第一行包含一个正整数T,表示测试数据数目。

每组测试数据包含一个整数n( 2<=N<=100),代表你需要求解的五角形圈中心的边数。

输出格式

对每一组测试数据,输出一行包含一个整数x,表示n五角形圈的生成树数目模2007之后的结果。

样例数据

input

1
2
output

40
数据规模与约定
保证a,b≤10^ 9a,b≤10^ 9。

时间限制:1s
空间限制:256MB

一个五边形被删了两条边,那么有一条一定在中心的那个n边形上
所以首先选择一个删除两条边的五边形,有n种可以选择,然后每个五边形删掉一条边,ans=4*n∗5(n−1)

因为数据小,直接做就行了

#include <bits/stdc++.h>
using namespace std;
int n,T,ans;
int read(){
	int x=0,f=1; char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}
	return x*f;
}
int main()
{
//	freopen("data.in", "r",stdin);
//	freopen("data.out", "w",stdout);
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d",&n);
		int i=0;
		for(ans=4*n;++i<=n-1;)
			ans=ans*5%2007;
		printf("%d\n",ans); 
	}
	return 0;
}

很简单吧~~~
在这里插入图片描述


在这里插入图片描述

谢谢观赏~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值