題目:
求s=a+aa+aaa+aaaa+aa...a的值兄纺,其中a是一個數(shù)字。例如2+22+222+2222+22222(此時共有5個數(shù)相加)摧找,幾個數(shù)相加有鍵盤控制无蜂。
程序分析:
關鍵是計算出每一項的值紊服。
方法1程序代碼:
package com.ljy.tencent;
import java.util.Scanner;
/**
* 題目:求s=a+aa+aaa+aaaa+aa...a的值檀轨,
* 其中a是一個數(shù)字胸竞。例如2+22+222+2222+22222(此時共有5個數(shù)相加),幾個數(shù)相加由鍵盤控制裤园。
* 程序分析:關鍵是計算出每一項的值撤师。
* @author liaojianya
* 2016年10月3日
*/
public class AddNumerical
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("請輸入一個數(shù)字:");
int n = input.nextInt();
System.out.println("請輸入需要相加的個數(shù):");
int number = input.nextInt();
input.close();
//調(diào)用計算方法
System.out.println("計算輸出結(jié)果為:");
System.out.print("s=");
System.out.print(count(n, number));
}
//求和表達式以及求和
public static int count(int n, int number)
{
int s = 0;//s為每一個疊數(shù)
int sum = 0;//sum為最后的總和
//循環(huán)從1次冪到number次冪的疊數(shù)
for(int i = 1; i <= number; i++)
{
//調(diào)用形成疊數(shù)的方法
s = coumpute(n, i);
//利用if...else區(qū)分是否為最后一個加數(shù),從而保證最后一個數(shù)后面不添加"+"
if(i == number)
{
System.out.print(s);
}
else
{
System.out.print(s + "+");
}
sum += s;
}
System.out.print("=");
return sum;
}
//疊數(shù)的形成
public static int coumpute(int n, int number)
{
int m = 0;
for(int i = 0; i < number; i++)
{
//從0次冪到number次冪形成疊數(shù)拧揽,如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...的個數(shù):");
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;
}
}
結(jié)果輸出:
請輸入一個數(shù)字:
2
請輸入需要相加的個數(shù):
5
計算輸出結(jié)果為:
s=2+22+222+2222+2222=24690