UVa1646Edge Case

来源:互联网 发布:菜鸟网络物流公司官网 编辑:程序博客网 时间:2024/06/03 23:07

        题意:n个节点组成一个圈,求匹配(没有公共点的边集)的个数。

        思路:找规律。列举一下n=3,4,5的结果,观察出是一个斐波那契数列。因为结果很大,自己写一个高精度。


#include <iostream>  #include <stdio.h>  #include <cmath>  #include <algorithm>  #include <iomanip>  #include <cstdlib>  #include <string>  #include <memory.h>  #include <vector>  #include <queue>  #include <stack>  #include <map>#include <set>#define ll long long#define INF 1000000#include<time.h>using namespace std;int F[10001][2500];int main(){memset(F,0,sizeof(F));F[3][1]=4;F[3][0]=1;F[4][1]=7;F[4][0]=1;for(int i=5;i<=10000;i++){int carry=0;for(int j=1;j<=F[i-1][0];j++){F[i][j]=F[i-1][j]+F[i-2][j]+carry;carry=F[i][j]/10;F[i][j]%=10;}F[i][0]=F[i-1][0];if(carry){F[i][F[i-1][0]+1]++;F[i][0]++;}}int n;while(cin>>n){for(int i=F[n][0];i>=1;i--){printf("%d",F[n][i]);}printf("\n");}return 0;}


0 0
原创粉丝点击