题目8:求s=a+aa+aaa+aaaa+aa...a的值

题目:

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

程序分析:

关键是计算出每一项的值。

方法1程序代码:

package com.ljy.tencent;
import java.util.Scanner;
/**
 * 题目:求s=a+aa+aaa+aaaa+aa...a的值,
 * 其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
 * 程序分析:关键是计算出每一项的值。
 * @author liaojianya
 * 2016年10月3日
 */
public class AddNumerical
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个数字:");
        int n = input.nextInt();
        System.out.println("请输入需要相加的个数:");
        int number = input.nextInt();
        input.close();

        //调用计算方法
        System.out.println("计算输出结果为:");
        System.out.print("s=");
        System.out.print(count(n, number));
    }
    //求和表达式以及求和
    public static int count(int n, int number)
    {
        int s = 0;//s为每一个叠数
        int sum = 0;//sum为最后的总和
        //循环从1次幂到number次幂的叠数
        for(int i = 1; i <= number; i++)
        {
            //调用形成叠数的方法
            s = coumpute(n, i);
            //利用if...else区分是否为最后一个加数,从而保证最后一个数后面不添加"+"
            if(i == number)
            {
                System.out.print(s);

            }
            else
            {
                System.out.print(s + "+");
            }
            sum += s;
        }
        System.out.print("=");
        return sum;
    }
    //叠数的形成
    public static int coumpute(int n, int number)
    {
        int m = 0;
        for(int i = 0; i < number; i++)
        {
            //从0次幂到number次幂形成叠数,如22222=2*10^4+2*10^3+2*10^2+2*10^1+2*10^0
            m += (int) (n * Math.pow(10, i));
        }
        return m;
    }
}

方法2程序代码:

package com.ljy.tencent;

import java.util.Scanner;

/**
 * s = a + aa + aaa + aaaa + ... + 
 * @author liaojianya
 * 2016年10月3日
 */
public class AddNumberical2
{
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in).useDelimiter("\\s*");//以空格作为分隔符
        System.out.println("请输入:s=a+aa+aaa...中的a:");
        int a = input.nextInt();
        System.out.println("请输入最后一个aaa...的个数:");
        int n = input.nextInt();
        input.close();
        System.out.println(expressed(a,n)+add(a,n));
    }
    //求和表达式
    public static String expressed(int a, int n)
    {
        StringBuffer ss = new StringBuffer();
        StringBuffer sub = new StringBuffer();
        for(int i = 1; i < n+1; i++)
        {
            sub = sub.append(a);
            ss = ss.append(sub);
            if(i < n)
            {
                ss = ss.append("+");
            }

        }
        ss.append("=");
        return ss.toString();
    }
    //求和
    public static long add(int a, int n)
    {
        long sum = 0;
        long sub = 0;
        for(int i = 1; i < n+1; i++)
        {
            sub = sub * 10 + a;

            sum += sub; 
        }
        return sum;
    }
}

结果输出:

请输入一个数字:
2
请输入需要相加的个数:
5
计算输出结果为:
s=2+22+222+2222+2222=24690

你可能感兴趣的:(题目8:求s=a+aa+aaa+aaaa+aa...a的值)