UVa 1645 Count(**)

题目大意:输入n,统计有多少个n个结点的有根树,使得每个深度中所有结点的子结点数相同。结果模1000000007。

思路:根据题意,每个结点的每个子树都是相同的。所以n结果为n-1的所有约数的结果加起来。

示意图:

代码如下:

 1 #include <iostream>
 2 #include <sstream>
 3 #include <cstdio>
 4 #include <cstring>
 5 #include <cmath>
 6 #include <string>
 7 #include <vector>
 8 #include <set>
 9 #include <cctype>
10 #include <algorithm>
11 #include <cmath>
12 #include <deque>
13 #include <queue>
14 #include <map>
15 #include <stack>
16 #include <list>
17 #include <iomanip>
18
19 using namespace std;
20
21 #define INF 0x7fffffff
22 #define maxn 1010
23 typedef long long ll;
24 const int MOD = 1000000007;
25
26 ll ans[maxn];
27
28 void init()
29 {
30     memset(ans, 0, sizeof(ans));
31     ans[1] = 1;
32     for(int i = 2; i < maxn; i++)
33     {
34         for(int j = 1; j < i; j++)
35         {
36             if((i-1)%j) continue;
37             ans[i] += ans[j];
38             ans[i] %= MOD;
39         }
40     }
41 }
42
43 int main()
44 {
45     init();
46     int n, kase = 0;
47     while(cin >> n)
48     {
49         cout << "Case " << ++kase << ": "<< ans[n] << endl;
50     }
51     return 0;
52 }
时间: 2024-10-21 16:28:37

UVa 1645 Count(**)的相关文章

UVA - 1645 - Count(思路)

题意:输入n(1 <= n <= 1000),输出有n个结点且每个深度中所有结点的子节点数相同的树有多少种. 根据题意,其实要求每个子树都相同. 一个结点当作根节点,还剩下n - 1个结点,枚举n - 1的因子(因子当作紧邻根结点的子树中的结点数),然后将所有因子的答案相加即可. 代码如下: #include<cstdio> #include<cstring> #include<cctype> #include<cstdlib> #include

count(1)与count(*)

http://www.cnblogs.com/sueris/p/6650301.html 结论:实际项目中count(1)用到多 记得很早以前就有人跟我说过,在使用count的时候要用count(1)而不要用count(*),因为使用count(*)的时候会对所有的列进行扫描,相比而言count(1)不用扫描所有列,所以count(1)要快一些.当时是对这一结论深信不疑,虽然不知道为什么.今天正好有时间研究研究看count(*)和count(1)到底有没有性能差异. count(*)不管内容是否

Innodb引擎中Count(*)

select count(*)是MySQL中用于统计记录行数最常用的方法,count方法可以返回表内精确的行数. 在某些索引下是好事,但是如果表中有主键,count(*)的速度就会很慢,特别在千万记录以上的大表. 所以.如果是用Innodb引擎的时候,使用select count(*)语句时,建议采用二级索引速度会比用主键索引更快. 在InnoDB引擎中,当我们通过二级索引统计数据的时候,无需扫描数据文件(二级索引存储指定字段的索引,实际的指向位置是主键索引.):而通过主键索引统计数据时,由于主

Count(*)与count(age)区别

Count(*)表示取得所有记录,忽略null,为null值也会取得. 采用count(字段名称),不会取得为null的纪录. 注意:在mysql和oracle中都适用. 原文地址:https://www.cnblogs.com/2016-cxp/p/11026851.html

UVA 1645 Count

https://vjudge.net/problem/UVA-1645 题意:有多少个n个节点的有根树,每个深度中所有节点的子节点数相同 dp[i] 节点数为i时的答案 除去根节点还有i-1个点,如果j是i-1的约数,说明能平均分成j棵子树 每棵子树有(i-1)/j个节点,所以可以递推 递推:子问题 #include<cstdio> using namespace std; const int mod=1e9+7; int dp[1001]; int main() { dp[1]=1; for

mysql中的count()函数使用

有时候总认为count(*)会比count(1)或者count(column name)慢,事实上是分情况处理. 比如: ---初始化语句 建立一张表并插入数据: create table test2 (id BIGINT PRIMARY key, name varchar(24))ENGINE=INNODB; insert into test2(id,name)values(1,null); insert into test2(id,name)values(2,'name1'); insert

thinkphp 5 count()方法在控制器,模板中的使用方法

thinkphp中关于count()方法的使用: 控制器中:echo count($arr)模板中:{$arr | count}模板中if判断语句中 <if condition="count($arr)">.....</if> 在模板中的if语句里的condition 进行大小判断 eq:等于 neq:不等于 lt:小于 gt:大于 原文地址:https://www.cnblogs.com/tine/p/8669370.html

UVa 1645 Count (递推,数论)

题意:给定一棵 n 个结点的有根树,使得每个深度中所有结点的子结点数相同.求多棵这样的树. 析:首先这棵树是有根的,那么肯定有一个根结点,然后剩下的再看能不能再分成深度相同的子树,也就是说是不是它的约数.那么答案就有了, 我们只要去计算n-1的约数有多少棵不同的树,然后就有递推式了. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <str

UVA Master-Mind Hints()

Master-Mind Hints Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Description MasterMind is a game for two players. One of them, Designer, selects a secret code. The other, Breaker, tries to break it. A code is no