题意就是给出3个原子的化学价,然后组成一个分子,要保证这个分子是稳定的,如果你还记得高中化学知识的话这个很容易理解,然后让你求出1-2 2-3 1-3 号原子之间有几条键, 这里我分别用ta tb tc 表示, 用数学的方法表示出来的话就是a = tc + tb; b = ta+tc; c = ta + tb;可能有多种情况,只要输出一种即可。
我们随便找其中一个原子,然后从0开始枚举它到b原子有多少键,根据上面的式子,可以计算出到c原子的键,然后就可以知另外两个原子间的键值,做一次判断即可,无需判断a = tc + tb; b = ta+tc; c = ta + tb; 因为计算工程中就用到了其中两个等式,保证其一定成立。 还有就是无法组成分子的情况,我们只要没找到满足条件的三个值就输出"Impossible"。
//cf 334B //2013-09-19-15.57 #include <iostream> #include <stdio.h> using namespace std; int main() { int a, b, c; while (scanf("%d %d %d", &a, &b, &c) != EOF) { int flag = 1; for (int i = 0; i <= a; i++) { int tb = i, tc = a-i; if (tb > c) continue; int ta = c - tb; if (b == ta + tc) { printf("%d %d %d\n", tc, ta, tb); flag = 0; break; } } if (flag) puts("Impossible"); } return 0; }