作者简介:大家好,我是未央;
博客首页:未央.303
系列专栏:笔试强训编程题
每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!
文章目录
前言
一、计算糖果 46579
题目描述:
题目解析:
二、进制转换 58541
题目描述:
题目解析:
总结
前言
一、计算糖果 46579
A,B,C三个人是好朋友,每个人手里都有一些糖果,我们不知道他们每个人手上具体有多少个糖果,但是我们知道以下的信息:
A - B, B - C, A + B, B + C. 这四个数值.每个字母代表每个人所拥有的糖果数.
现在需要通过这四个数值计算出每个人手里有多少个糖果,即A,B,C。这里保证最多只有一组整数A,B,C满足所有题设条件。
输入描述:
输入为一行,一共4个整数,分别为A - B,B - C,A + B,B + C,用空格隔开。 范围均在-30到30之间(闭区间)。
输出描述:
输出为一行,如果存在满足的整数A,B,C则按顺序输出A,B,C,用空格隔开,行末无空格。 如果不存在这样的整数A,B,C,则输出No
题目解析:
思路分析:
本题目实际上就是已经知道A - B, B - C, A + B, B + C. 这四个式子的值;
然后求A,B,C的值;实际上就是我们数学中的解一元二次方程,求解出A,B,C的值即可;
然后我们发现根据计算可以求出两个B的值;
如果两个B值相等,则说明A,B,C的值满足A - B, B - C, A + B, B + C.这四个一元二次方程;
如果两个B的值不相等,输出描述中已经说明则返回:”No“;
代码实现:
二、进制转换 58541
题目描述:
给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数
输入描述:
输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。
输出描述:
为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)
示例:
题目解析:
思路分析:
本题题目很简单, 题目的本意就是将10进制的数转换成N进制。N(2 ≤ N ≤ 16)可以看出进制最多可以到16进 制。
首先想清楚原理:N进制数,每个进制位的值分别是X0*N^0,X1*N^1, X2*N^2.....,X0;
X1,X2就是这些进制位的值,就是进行取模余数就是当前低进制的位的值是多少,通过除掉进制数,进入下一个进制位的计算。
举例说明:
将123转换为10进制; 通过就是进行取模余数%就是当前低进制的位的值是多少;然后通过取商/再去模余数%获得下一位的数字;然后将其放入一个数组当中;
如果其顺序不对还需要进行数组逆置;
代码实现:
输出示例:
8行代码解析:
StringBuilder的用法;
20行代码解析1:
append()方法的使用:
public class Test{ public static void main(String args[]){ StringBuffer sBuffer = new StringBuffer("aaa"); sBuffer.append("bbb"); sBuffer.append("ccc"); sBuffer.append("ddd"); System.out.println(sBuffer); } }
输出:
运行结果:aaabbbcccddd
20行代码解析2:
charAt()方法的使用:
总结