Description
大富豪Mily收藏了很多精美的钻石。但是,Mily收藏钻石有个嗜好,他收藏的钻石的形状必须满足两个条件: (1)钻石上任意两个顶点都能够通过一条或多条棱相互联通。 (2)在钻石表面任意画一个圈,沿这个圈切开,一定能把钻石分成两部分。 大富豪Mily对钻石的表面非常有兴趣,他知道,他所收藏的每颗钻石的顶点数v和棱数e,但他还不知道每颗钻石有多少个面,你能帮帮他吗?
Input
输入包括多组测试数据,你应当处理到EOF(End Of File)为止。 对于每组测试数据,仅含有一行,包含两个正整数e和v,之间以一个空格隔开。
Output
对于每组测试数据,请输出一行,仅包含一个正整数f,表示钻石有多少个面。
4 6
Hint
如何处理输入结束呢? c: while(scanf(...)!=EOF) c++: while(cin>>a>>b) 具体可以看1001题的提示.
代码:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <algorithm> using namespace std; int main() { int v, e; // Euler Theorem(v+f-e=2) while (scanf("%d%d", &e, &v) != EOF) { printf("%d ", 2 + e - v); } return 0; }