牛客网编程练习之编程马拉松:鸽兔同校
题目描述
浙江大学校园里绿树成荫,环境非常舒适,因此也引来一批动物朋友来此居住。
童心未泯的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
牛客网编程练习之编程马拉松:鸽兔同校相关推荐
- 牛客网剑指offer编程实践1-10题
牛客网剑指offer编程实践1-10题 1.二维数组中的查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这 ...
- 牛客网 赛码在线编程中数据读取问题
一. 数据读取的方式(python3) 1. input()读取输入数据 while True:try:inputs = input()except:break 2. 网站的数据输入是是一个含有多 ...
- 牛客网JavaScript V8在线编程输入输出
1.单行输入 let line = readline() let arr = line.split(' ') 2.多行输入 最后附上牛客网在线练习输入输出的网址http://www.nowcoder. ...
- 牛客网剑指offer编程实践41-50题
41.和为S的连续正数序列 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两 ...
- 牛客网力扣算法编程之十四 | 字符串 - 字符个数统计 - Java代码实现
[算法编程]字符个数统计 一. 题目描述 编写一个函数,计算字符串中含有的不同字符的个数.字符在 ASCII 码范围内( 0~127 ,包括 0 和 127 ),换行表示结束符,不算在字符里.不在范围 ...
- 牛客网剑指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].不 ...
- 牛客网剑指offer编程实践31-40题
31. 整数中1出现的次数(从1到n整数中1出现的次数) 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12. ...
- 牛客网剑指offer编程实践21-30题
21.栈的压入.弹出序列 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5, ...
- 牛客网剑指offer编程实践11-20题
11.二进制中1的个数 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 解答: 方法: 如果一个整数不为0,那么这个整数至少有一位是1.如果我们把这个整数减1,那么原来处在整数最右边 ...
- 牛客网-2018 美团 CodeM 编程大赛-初赛 A 轮
ACM模版 这场比赛没有晋级,以为没有好好打--我又在找借口.下午去办入职体检,比赛开始时还在回来路上,回到宿舍的时候就剩下半个小时了,签了一下到就没时间了.赛后发现第三题很有意思,就补了补-- 1- ...
最新文章
- JS设计模式学习实例之单例模式
- Git record
- OpenCASCADE:Foundation Classes之异常
- /*3.使用二维数组存储班上五个学生三门功课的考试成绩,要求输出每一个学生的总分、平均分、最高分、最低分。
- 蓝桥杯 ALGO-11 算法训练 瓷砖铺放
- 2013年08月13日
- SAP BW系统日常维护日常工作及常见的Infopackage错误
- 中运用_钢琴教学中指法的安排与运用
- 《设计模式之禅》--设计模式大PK
- BZOJ 3329 Xorequ 数字DP+矩阵乘法
- 【工具】(七):win10常用工具整理!!!
- mysql(多级分销)无限极数据库设计方法
- e4e反演框架:Designing an Encoder for StyleGAN Image Manipulation
- Adobe Acrobat XI Pro 11.x 安装指南
- python节日快乐_【python】一键生成漂亮的节日快乐词云图
- Kahan summation
- Android 头像上传
- JavaWeb-实现多ip、异地 同时登录踢人下线
- 响应式织梦模板智能无人机类网站
- Head First JAVA 拾忆-1
热门文章
- 模糊IBE/Fuzzy Identity-based encryption
- MySQL数据库——数据修改(二)
- 计算机学院办活动给什么奖品好,学校搞活动,给学生发什么活动礼品才好呢?...
- 共享打印机出现0x00000709错误
- VIM文本编辑器基本操作
- nti是c语言合法标识符,c语言程序设计的练习.doc
- 计算机毕业设计ssm免费音乐分享平台
- HTML特殊字符编码对照表(最全特殊字符编码)
- 支付宝蜻蜓刷脸支付设备再次来袭
- 计算机素养大赛基础赛项,全国大学生计算机应用能力与信息素养大赛竞赛大纲ICGS4赛项.DOC...