求9、99、999、......、999999999相加的和

求9+99+999+9999+99999+999999+9999999+99999999+999999999相加的和。

/**
	 * 求9+99+999+9999+99999+999999+9999999+99999999+999999999相加的和。
	 * 方法一:先求10的第几次幂然后减1得出是几个9,
	 * 		例如:10 ^ 1 - 1 = 9
	 * 			10 ^ 2 - 1 = 99
	 * 			10 ^ 3 - 1 = 999
	 * 			......
	 * 			10 ^ 9 - 1 = 999999999
	 * 
	 * 方法二:后一个数是前一个数的10备再加9
	 * 		例如:0 * 10 + 9 = 9
	 * 			9 * 10 + 9 = 99
	 * 			99 * 10 + 9 = 999
	 * 			......
	 * 			99999999 * 10 + 9 = 999999999
 	 */
	//方法一
	public static void WayOne() {
		int sum = 0;
		String info = "";
		int result;
		for (int i = 1; i <= 9; i++) {
			result = (int) Math.pow(10, i);//10的几次幂
			sum += result - 1;
			if (i == 9) {
				info += (result - 1);
			} else {
				info += (result - 1) + "+";
			}
		}
		System.out.println(info + "=" + sum);
	}
	//方法二
	public static void WayTwo() {
		int sum = 0;
		int num = 0;
		String info = "";
		for (int i = 0; i < 9; i++) {
			num = num * 10 + 9;
			sum += num;
			if (i == 8) {
				info += num;
			} else {
				info += num + "+";
			}
		}
		System.out.println(info + "=" + sum);
	}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 1到100的数列和,即1+2+3+...+100的结果。 解法一:暴力和法 将1到100的数列依次相加,即可得到结果。 1+2+3+...+98+99+100=505 解法二:等差数列和法 1到100的数列是一个等差数列,公差为1,首项为1,末项为100。根据等差数列和公式,可得: S = n(a1 + an) / 2 其中,S为数列和,n为数列项数,a1为首项,an为末项。 将n取100,a1取1,an取100代入公式,即可得到结果。 S = 100(1 + 100) / 2 = 505 因此,1到100的数列和为505。 ### 回答2: 这道题是一道简单的数学题,初学生可能会想到将数字一个一个相加,这样会非常耗时。其实,如果将数列按照相加的顺序倒过来,即100 99 98 ...... 3 2 1,再将相邻的两个数相加,就有100+1=101,99+2=101,98+3=101......等等,这样每两个数字的和都是101,而100个数字分为了50组,因此这个数列的和就是101*50=5050。 实际上,在学习数学中,我们经常遇到各种类型的数列和,如等差数列、等比数列等等。这些问题都可以通过找规律或者数学公式来解决。 对于等差数列,其首项为a1,公差为d,第n项为an,则这个等差数列的前n项和Sn为:Sn = n(a1+an)/2。 对于等比数列,其首项为a1,公比为q(q≠0),第n项为an,则这个等比数列的前n项和Sn为:Sn = a1(1-q^n)/(1-q)。 这些公式其实并不难记,但在使用过程中,我们需要适当地进行变形和加减混合运算。 通过数列和问题,可以锻炼我们的数学思维能力和逻辑推理能力。在学习过程中,我们可以多动手练习、多思考和与同学讨论,不断提高自己的数学能力。 ### 回答3: 首先,我们可以使用等差数列和公式来解。由于这个数列是从1开始,公差为1,且共有100个数,所以可以得到: 1+2+3+...+100 = (1+100)*100/2 = 5050 上述计算过程中用到了等差数列和公式,即S_n = (a_1+a_n)*n/2,其中a_1为数列的首项,a_n为数列的末项,n为数列的项数。 除此之外,我们还可以尝试使用递归的方式解。具体思路是,对于一个数n,它的前一个数为n-1,则数列的和可以表示为n + Sum(n-1),其中Sum(n-1)表示前n-1个数的和。当n=1时,前面没有数,所以Sum(1)=1。因此,我们可以写出如下的递归函数: def Sum(n): if n == 1: return 1 else: return n + Sum(n-1) 最后,我们在调用Sum(100)时,便可以得到数列1到100的和,即5050。这种方法可以帮助我们更好地理解递归的思想,也是一种比较通用的解数列和的方法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lgm灵均

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

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

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

打赏作者

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

抵扣说明:

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

余额充值