首页 > 代码库 > (2016弱校联盟十一专场10.3) D Parentheses

(2016弱校联盟十一专场10.3) D Parentheses

题目链接

把左括号看成A右括号看成B,推一下就行了。好久之前写的,推到最后发现是一个有规律的序列。

 

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
    ll n;
    while(scanf("%lld",&n)!=EOF)
    {
        ll cnt=0,sum=0;
        for(int i=1;; i++)
        {
            if(sum>=n) break;
            cnt++;
            sum=sum+cnt;
            //printf("%d : %d\n",i,sum);
        }
        printf(")");
        ll a=sum-n;
        ll b=cnt-a;
        for(int i=1;i<=cnt;i++)
        {
            if(b==i)
            printf("(");
            else
            printf(")");
        }
        for(int i=0;i<cnt-1;i++)
        printf("(");
        puts("");
    }
    return 0;
}

 

(2016弱校联盟十一专场10.3) D Parentheses