Uva 1645 Count

Posted 蒟蒻JHY

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Uva 1645 Count相关的知识,希望对你有一定的参考价值。

给个题目链接:https://vjudge.net/problem/UVA-1645

题目大意是求有多少个n个节点的每一层节点都有相同数量儿子的树,将答案对10^9+7取模,多组询问。

可以很简单的发现下一层的节点数肯定是上一层的倍数,这样的话我们就调和级数一下,N^2 log N预处理 O(1)查询。

 

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#define ll long long
const int maxn=1005;
const int ha=1000000007;
using namespace std;
int f[maxn][maxn]; 
int ans[maxn],n,m;

inline int add(int x,int y){
	x+=y;
	if(x>=ha) return x-ha;
	else return x;
}

inline void init(){
	f[1][1]=1;
	for(int i=1;i<=1000;i++)
	    for(int j=1;j<=i;j++) if(f[i][j]){
	    	int base=f[i][j];
	    	ans[i]=add(ans[i],base);
	    	
	    	if(i<1000) for(int k=j,u=k+i;u<=1000;k+=j,u+=j) f[u][k]=add(f[u][k],base); 
		}
}

int main(){
	init();
	int cnt=0;
	while(scanf("%d",&n)==1){
		printf("Case %d: %d\n",++cnt,ans[n]);
	}
	
	return 0;
}

  

以上是关于Uva 1645 Count的主要内容,如果未能解决你的问题,请参考以下文章

UVA 1645 Count

Uva 1645 Count

UVA 357 Let Me Count The Ways

chaper3_exercise_Uva1585_score

UVA11019 Matrix Matcher

UVa 1442 - Cave