本题使用所谓的辗转相除法。
还需要逆过来遍历二叉树。可以想象给出的数据点是根节点,然后遍历到根节点(1,1)。
考的是根据给出的规则,总结规律的能力。
#include <stdio.h> namespace BinaryTree2499_1 { int main() { int T, a, b, le, ri; scanf("%d", &T); for (int t = 1; t <= T; t++) { scanf("%d %d", &a, &b); le = 0, ri = 0; while (a != 1 || b != 1) { if (a == 1 || b == 1) { if (a == 1) { ri += b - a; b = 1; } else { le += a - b; a = 1; } } else if (a < b) { ri += b / a; b %= a; } else { le += a / b; a %= b; } } printf("Scenario #%d:\n%d %d\n\n", t, le, ri); } return 0; }
POJ 2499 Binary Tree 题解,布布扣,bubuko.com
原文:http://blog.csdn.net/kenden23/article/details/36889699