求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由用户控制。

题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由用户控制。

一开始看到需要不停乘上10,脑子有点乱,但慢慢分析下来就还好

这个题就是先输入而后每一个加数要比前一个加数多乘10的一次方加上原始数字,再加起来就稳了,最后要求和。

public class Test1 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入原始的数字:");
        long a = sc.nextLong();//获取原始数字
        System.out.println("请输入要相加的个数:");
        int n = sc.nextInt();//获取要相加的个数
        long num = a;//每个加数
        long sum = 0;//总和初始值定为0

        for(int i = 0; i<n; i++) {
            sum += num;
            //改变加数
            num *= 10;
            num += a;//第(i+1)加数等于第i个加数乘上10加上原始数字
        }
        System.out.println("sum= "+sum);
    }
}

输出结果:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个式子可以写成:s=a+(a*10+a)+(a*100+a*10+a)+...+(a*10^(n-1)+a*10^(n-2)+...+a) 可以发现,每一项都是由前一项乘以10再加上a得到的,因此可以得到以下递推式: s = a + (a+10a) + (a+10a+100a) + ... + (a+10a+100a+...+10^(n-1)a) = a + 11a + 111a + ... + (10^n-1)/9*a 化简得: s = a*(10^n-1)/9 + a*(1+11+111+...+(10^n-1)/9) 对于第二项,可以使用等比和公式: 1+11+111+...+(10^n-1)/9 = (10^n-1)/9 * (1+10+10^2+...+10^(n-1)) = (10^n-1)/9 * (10^n-1)/9 代入得: s = a*(10^n-1)/9 + a*(10^n-1)/81 化简得: s = a*(10^n+8)/81 ### 回答2: 这道问题的关键在于找到列s的规律,然后利用该规律解s的。 首先,我们可以尝试手动计算一些列的前几项来寻找规律。假设a=2,则列s的前几项为2, 22, 222, 2222, 22222, ...。显然,这是一个无穷级,我们需要找到该级的通项公式时确切地出s的。 通过观察列s的前几项,我们可以猜测列的第n项可以写成n个a相加的形式,即s(n)=a + aa + aaa + ... + a(n个a)。例如,当n=4时,列的第4项为a + aa + aaa + aaaa=2 + 22 + 222 + 2222=246。 为了验证该推测,我们可以尝试递归地计算列s的前几项。假设已知s(1)=a,则s(2)=s(1) + aa=a + aa,s(3)=s(2) + aaa=a + aa + aaa,以此类推。因此,可以得出列s的通项公式如下: s(n) = a + aa + aaa + ... + a(n个a) = a × (1 + 11 + 111 + ... + 1(n-1个1)) 现在,问题转化为了如何1+11+111+...+1(n-1个1)的。通过观察该列的前几项,我们可以猜测该列是一个等比列,首项为1,公比为10,共有n项。因此,该列的和可以用等比和公式来表示: S = 1 + 11 + 111 + ... + 1(n-1个1) = (1 - 10^n) / (1 - 10) 将上式代入s(n)的公式中,则得到: s(n) = a × (1 + 11 + 111 + ... + 1(n-1个1)) = a × (1 - 10^n) / (1 - 10) 因此,列s的可以用上式计算得出。例如,当a=2,n=4时,s(4)=2 × (1 - 10^4) / (1 - 10) = 246。 综上所述,对于列s=a + aa + aaa + ... + a(n个a),其中a为一个数字,其可以通过列的递推关系式和等比和公式来得。 ### 回答3: 这道题目需要我们找到一个通项公式,才能出s的。首先,可以根据s的形式发现,它是一个等比列的和,即: s = a + aa + aaa + aaaa + ... 假设这个等比列的首项是a,公比是r,则有: a + ar + ar^2 + ar^3 + ... 因为|r| < 1,所以上式是一个收敛的无穷等比列,其和为: s = a/(1-r) 现在的问题是如何出公比r。可以发现,从第二项开始,每一项都是在前一项的基础上加上一个a,这可以用学归纳法来证明。这就意味着,从第二项开始,每一项都是前一项乘以一个r,且r = 10。因为每个a都被当作一个十进制中的数字来处理,所以r的是10。因此,可以得到: s = a/(1-10) = -a/9 因此,当a不等于0时,s的为-a/9。 需要注意的是,当a等于0时,s的为0,因为所有项都为0。另外,当a为负时,s的也是负,因为公比r是正

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值