把左括号看成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; }
时间: 2024-10-21 12:49:02