题目描述

浙江大学校园里绿树成荫,环境非常舒适,因此也引来一批动物朋友来此居住。
童心未泯的NowCoder就经常带些碎面包什么的去广场喂鸽子和兔子,并和它们玩耍。 一点也没有大学生的样子,还是一副老不正经的样子,呵呵。
随着鸽子和兔子数目的增多,NowCoder带的那点食物已经不够它们瓜分了。为了能让自己的好朋友吃的饱饱的, NowCoder决定统计一下有多少只鸽子和有多少只兔子,以便带来足够的食物。一、二、三、四、五...他开始数了。
现在,他已经知道有这些鸽子和兔子一共有n个头和m只脚。请你帮他写个程序计算一下一共有多少只鸽子和兔子。

输入描述:

输入包括多组数据。

每行包括2个正整数n和m,n和m可能会很大,超过2^64,但位数不超过100位。

输出描述:

每组数据的输出都只有一行,分别是鸽子的数量和兔子数量。

如果输入的测试数据不能求得结果,那肯定是NowCoder这个马大哈数错了,就输出“Error”提示他。

示例1

输入

35 941 3

输出

23 12Error

思路:

此类问题暴力破解不是个好办法,想办法从数学的角度来解决。

假设鸽子有x只,兔子有y只,则得到方程组:

x+y=n  ①

x*2+y*4=m ②

将①变换带入②式,得:

(n-y)*2+y*4=m

2n-2y+4y=m

2n+2y=m

y=(m-2n)/2  ③

将读入的n和m带入③式,看有没有有效解即可。

只是有两个地方需要注意一下:

1. 使用大数运算

2. x和y的值只能是正整数

AC代码:

import java.math.BigInteger;
import java.util.Scanner;/*** @author CC11001100*/
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNextBigInteger()) {BigInteger n = sc.nextBigInteger();BigInteger m = sc.nextBigInteger();BigInteger t = m.subtract(n.multiply(BigInteger.valueOf(2)));if (t.mod(BigInteger.valueOf(2)).intValue() != 0) {System.out.println("Error");continue;}BigInteger y = t.divide(BigInteger.valueOf(2));BigInteger x = n.subtract(y);if(x.compareTo(BigInteger.ZERO)<0 || y.compareTo(BigInteger.ZERO)<0){System.out.println("Error");continue;}System.out.println(x + " " + y);}}}

题目来源: https://www.nowcoder.com/practice/5db1728ebfec4206bad8c3eee431faf9?tpId=3&tqId=10874&tPage=1&rp=&ru=/ta/hackathon&qru=/ta/hackathon/question-ranking

转载于:https://www.cnblogs.com/cc11001100/p/8040700.html

牛客网编程练习之编程马拉松:鸽兔同校相关推荐

  1. 牛客网剑指offer编程实践1-10题

    牛客网剑指offer编程实践1-10题 1.二维数组中的查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这 ...

  2. 牛客网 赛码在线编程中数据读取问题

    一. 数据读取的方式(python3) 1.  input()读取输入数据 while True:try:inputs = input()except:break 2.  网站的数据输入是是一个含有多 ...

  3. 牛客网JavaScript V8在线编程输入输出

    1.单行输入 let line = readline() let arr = line.split(' ') 2.多行输入 最后附上牛客网在线练习输入输出的网址http://www.nowcoder. ...

  4. 牛客网剑指offer编程实践41-50题

    41.和为S的连续正数序列 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两 ...

  5. 牛客网力扣算法编程之十四 | 字符串 - 字符个数统计 - Java代码实现

    [算法编程]字符个数统计 一. 题目描述 编写一个函数,计算字符串中含有的不同字符的个数.字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里.不在范围 ...

  6. 牛客网剑指offer编程实践51-66题

    51. 构建乘积数组 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]A[1]...A[i-1]A[i+1]...A[n-1].不 ...

  7. 牛客网剑指offer编程实践31-40题

    31. 整数中1出现的次数(从1到n整数中1出现的次数) 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12. ...

  8. 牛客网剑指offer编程实践21-30题

    21.栈的压入.弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5, ...

  9. 牛客网剑指offer编程实践11-20题

    11.二进制中1的个数 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 解答: 方法: 如果一个整数不为0,那么这个整数至少有一位是1.如果我们把这个整数减1,那么原来处在整数最右边 ...

  10. 牛客网-2018 美团 CodeM 编程大赛-初赛 A 轮

    ACM模版 这场比赛没有晋级,以为没有好好打--我又在找借口.下午去办入职体检,比赛开始时还在回来路上,回到宿舍的时候就剩下半个小时了,签了一下到就没时间了.赛后发现第三题很有意思,就补了补-- 1- ...

最新文章

  1. JS设计模式学习实例之单例模式
  2. Git record
  3. OpenCASCADE:Foundation Classes之异常
  4. /*3.使用二维数组存储班上五个学生三门功课的考试成绩,要求输出每一个学生的总分、平均分、最高分、最低分。
  5. 蓝桥杯 ALGO-11 算法训练 瓷砖铺放
  6. 2013年08月13日
  7. SAP BW系统日常维护日常工作及常见的Infopackage错误
  8. 中运用_钢琴教学中指法的安排与运用
  9. 《设计模式之禅》--设计模式大PK
  10. BZOJ 3329 Xorequ 数字DP+矩阵乘法
  11. 【工具】(七):win10常用工具整理!!!
  12. mysql(多级分销)无限极数据库设计方法
  13. e4e反演框架:Designing an Encoder for StyleGAN Image Manipulation
  14. Adobe Acrobat XI Pro 11.x 安装指南
  15. python节日快乐_【python】一键生成漂亮的节日快乐词云图
  16. Kahan summation
  17. Android 头像上传
  18. JavaWeb-实现多ip、异地 同时登录踢人下线
  19. 响应式织梦模板智能无人机类网站
  20. Head First JAVA 拾忆-1

热门文章

  1. 模糊IBE/Fuzzy Identity-based encryption
  2. MySQL数据库——数据修改(二)
  3. 计算机学院办活动给什么奖品好,学校搞活动,给学生发什么活动礼品才好呢?...
  4. 共享打印机出现0x00000709错误
  5. VIM文本编辑器基本操作
  6. nti是c语言合法标识符,c语言程序设计的练习.doc
  7. 计算机毕业设计ssm免费音乐分享平台
  8. HTML特殊字符编码对照表(最全特殊字符编码)
  9. 支付宝蜻蜓刷脸支付设备再次来袭
  10. 计算机素养大赛基础赛项,全国大学生计算机应用能力与信息素养大赛竞赛大纲ICGS4赛项.DOC...