題目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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容