代码题:求 s=a+aa+aaa+aaaa+aa...a 的和,其中a是一个数字。

本文介绍了一道Java编程题目,要求根据用户输入的数字和个数计算连续数字之和,例如求3+33+333+...的和。作者提出将问题转换为求1+11+111...的和再乘以原始数字,通过分解问题简化求解。文中提供了解决10的乘方问题的方法,并给出了参考代码,最终实现了求和的功能。
摘要由CSDN通过智能技术生成

背景

几天前笔者在做Java编程题的时候,遇到了这样一道题:
求 s=a+aa+aaa+aaaa+aa…a 的和,其中a是一个数字,例如2+22+222+2222+2…2 最大有几个2由键盘录入得到 例如提示用户 请输入你要求和的数字 用户输入的是3 请输入你要的最大的数字个数 用户输入的是5 那么就是求 3+33+333+3333+33333 的和 请编写程序实现。
相信网上已经有不少这个题的答案,所以写这篇博客,是为了为大家提供一个作为初学者面对这道题的可能不太一样的思路。

笔者看到这道题的思路

如题干中所示,一共需要输入两个数字,第一个是需要求和的数字,第二个是数字最多的个数,例如,第一次输入5,第二次输入3,则求的是5+55+555的和。不难可以看出,不论输入的是几, 最后都可转化为1+11+1…1的和(最多的1的数目取决于第二次输入的数字)再乘以第一次输入的数字。于是这个问题就分解成了:(1)用键盘输入一个数字,求出1+11+1…1(定为a式)(最多的1的数目取决于输入的这个数字)的和(2)用1中的结果再乘以一个之前输入好的数字。显然,问题二对于初学者来说很好解决,我们只需要解决问题(1)。
不难看出,问题(1)又可分解为,(1)+(1+10)+(1+10+100)࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值