BZOJ1258
-
题目
-
分析
真 —— 规律题
首先题目中样例解释有误: T 12 T12 T12 靠 T 14 T14 T14 和 T 4 T4 T4 。
经过找规律可知:当读入是 T . . . . . . 4 T......4 T......4 时: 答案显然是: T . . . . . . . 1 T . . . . . . . 2 T . . . . . . . 3 T.......1 \quad T.......2\quad T.......3 T.......1T.......2T.......3
如果读入的最后一个数字不是 4 4 4 :
规律发现: 相邻的三角形答案最多是三个且都以 4 4 4 结尾。
继续找规律发现:输出是在倒数第一次出现的 1 、 2 、 3 1、2、3 1、2、3。
-
代码
int f[55]; string s; void out(int x) { for(int i= 0;i < x;i++) cout << s[i]; cout << '4' << endl; } int main () { //freopen("input.in", "r", stdin); //freopen("test.out", "w", stdout); cin>>s; if(s[s.size() - 1] == '4') { string ans ; for(int i= 0;i < s.size() - 1;i++) ans += s[i]; cout << ans << '1' << endl; cout << ans << '2' << endl; cout << ans << '3' << endl; return 0; } int sz = (int)s.size() - 1; f[s[sz] - '0'] = 1; out(sz); for(int i = sz - 1;i >= 1;i--) { if(!f[s[i] - '0']) { f[s[i] -'0'] = 1; out(i); } } return 0 ; }
-
题型
规律