nyoj 64-鸡兔同笼 (解二元一次方程)

64-鸡兔同笼


内存限制:64MB 时间限制:3000ms Special Judge: No
accepted:26 submit:58

题目描述:

已知鸡和兔的总数量为n,总腿数为m。输入n和m,依次输出鸡和兔的数目,如果无解,则输出“No answer”(不要引号)。

输入描述:

第一行输入一个数据a,代表接下来共有几组数据,在接下来的(a<10)
a行里,每行都有一个n和m.(0<m,n<100)

输出描述:

输出鸡兔的个数,或者No answer

样例输入:

2
14 32
10 16

样例输出:

12 2
No answer

分析:
  1、解方程,需要判断是否能通过整除得到鸡兔的个数(m-2n)%2  
  2、判断得到的鸡兔个数是否全部为正数

核心代码:
1 int flag1 = (m-2*n) % 2, temp1 = (m-2*n) / 2, temp2 = n - temp1;
2 if (flag1 || temp1 < 0 || temp2 < 0)
3     printf("No answer\n");
4 else
5     printf("%d %d\n", temp2, temp1);

C/C++代码实现(AC):

 

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstring>
 4 #include <cstdio>
 5 #include <cmath>
 6 #include <stack>
 7 #include <map>
 8 #include <queue>
 9 #include <set>
10 
11 using namespace std;
12 
13 int main()
14 {
15     int t;
16     scanf("%d", &t);
17     while(t --)
18     {
19         int n, m;
20         scanf("%d%d", &n, &m);
21         int flag1 = (m - 2*n) % 2, temp1 = (m - 2*n) / 2, temp2 = n - temp1;
22         if (flag1 || temp2 < 0 || temp1 < 0)
23             printf("No answer\n");
24         else
25             printf("%d %d\n", temp2, temp1);
26     }
27     return 0;
28 }

 

posted @ 2018-05-30 13:19  GetcharZp  阅读(336)  评论(0编辑  收藏  举报