码迷,mamicode.com
首页 > 其他好文 > 详细

Uva 1645 Count

时间:2018-02-20 11:17:32      阅读:102      评论:0      收藏:0      [点我收藏+]

标签:++   cpp   def   ini   highlight   max   include   const   turn   

给个题目链接: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

标签:++   cpp   def   ini   highlight   max   include   const   turn   

原文地址:https://www.cnblogs.com/JYYHH/p/8454870.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!