求几个数相加例如:2+22+222+。。。

/**
 * 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),
 * 几个数相加有键盘控制。
 * 
 * @author Administrator
 *
 */
public class LianXi08 {
	public static void main(String[] args) {
		long a, b = 0, sum = 0;
		Scanner sc = new Scanner(System.in);
		System.out.println("输入数字a的值");
		a = sc.nextInt();
		System.out.println("输入相加的项数");
		int n = sc.nextInt();
		int i = 0;
		while (i < n) {
			b = b + a;
			sum = sum + b;
			a = a * 10;
			++i;
		}
		sc.close();
		System.out.println(sum);

	}
}

s=a+aa+aaa+aaaa+aa…a的值,其中a是一个字。例如:2+22+222+2222+22222(此时共有5个相加),几个相加有关键盘控制。输出结果的形式如:2+22+222=246; 答案: 根据题目给出的公式,可以得到s= a + 11a + 111a + 1111a + ... + 111...11a,其中最后一项111...11中1的个与加的字个有关。 对于示例中的2+22+222+2222+22222,可以看出一共加了5个字,所以最后一项的1的个为5,即11111,长度为5。 接下来可以将每一项拆开计算,即s = a + (a + aa) + (a + aa + aaa) + (a + aa + aaa + aaaa) + ... + (a + aa + ... + 111...11a) 将每一项进行简化,可得s = a(1 + 11 + 111 + 1111 + ... + 111...11) + a(1 + 10 + 100 + 1000 + ... + 10...00) + ... + a(1 + 2 + 22 + 222 + ... + 111...11) 因为每一项有相同的系a,可以提取出来,得到s = a(1 + 11 + 111 + 1111 + ... + 111...11) + a(1 + 10 + 100 + 1000 + ... + 10...00) + ... + a(1 + 2 + 22 + 222 + ... + 111...11) 其中,第一个括号内的式子是一个无穷等比列,等比公比为10,首项为1,所以根据等比和公式可得,第一个括号内的结果为a(111...11),其中1的个为加的字个。 而第二个括号内的式子是一个无穷等比列,等比公比为10,首项为1,所以根据等比和公式可得,第二个括号内的结果为a(10...00),其中0的个为加的字个。 以此类推,最后一个括号内的结果为a(222...22),其中2的个为加的字个。 将每个括号内的结果相加,即可得到最终结果。对于示例来说,a=2,加的字个为5,所以第一个括号内的结果为11111,第二个括号内的结果为11110,第三个为11000,第四个为2000,最后一个为22222,将它们相加即可得到2+22+222+2222+22222=246。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小阳世界2023

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值