POJ 1095

来源:互联网 发布:python抓取股票数据 编辑:程序博客网 时间:2024/05/01 16:36

刚开始推荐题目里把它和POJ 1019放在一起,我还没想通他两有啥联系,现在写完了,想通了。都是把数据一段一段地保存,还有一个数组来记录到某一个位置,一共有多少位。规律的话给出一个连接,可以去那里看http://blog.csdn.net/suikay/article/details/6273716

#include<iostream>#include<cstdio>using namespace std;const int sz = 20;int arr[sz],sum[sz];int go(int x){if(x == 1){putchar('X');return 0;}int i;int j=0;for(i = 1;i < sz;++i){if(sum[i] >= x)break;}x -= sum[i-1];--i;    for(j = 0; j <= i; ++j){if(x > arr[j]*arr[i-j]){x -= arr[j]*arr[i-j];continue;}if(j){printf("(");go(sum[j-1]+1+(x-1)/arr[i-j]);printf(")");}printf("X");if(j<i){printf("(");go(sum[i-1-j]+1+(x-1)%arr[i-j]);printf(")");}return 0;}return 1;}int main(){int k,n;arr[0] = arr[1] = 1;sum[1] = 1;int i,j;for(i=2;i<=sz;++i){k = i-1;for(j = 0;j <= k;++j)arr[i] += arr[j]*arr[k-j];sum[i] = sum[i-1] + arr[i];}while(scanf("%d",&n) && n){go(n);puts("");}return 0 ;}


原创粉丝点击