【笔试强训编程题】Day4.(计算糖果 46579 ) 和(进制转换 58541)

作者简介:大家好,我是未央;

博客首页:未央.303

系列专栏:笔试强训编程题

每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!


前言


 

一、计算糖果 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()方法的使用:

总结

 

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值