论坛首页 编程语言技术论坛

【java练习题8】--s=a+aa+aaa+aaaa+aa...a的值

浏览 11303 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-04-03  

【程序8】   

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

1.程序分析:关键是计算出每一项的值。   

 

2.

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println("输入a的值0-9之间");

Scanner in=new Scanner(System.in);

int a=in.nextInt();

System.out.println("输入a叠加的最大个数");

int num=in.nextInt();

int sum=0;

for (int i = 1; i <=num; i++) {

int temp=0;

for (int j = 1; j <=i; j++) {

temp+=Math.pow(10, j-1)*a;

}

sum+=temp;

}

System.out.println(sum);

}

   发表时间:2012-04-23  
如果输入是num是个比较大的树的话就会出现溢出的现象,所以不能用这种方法简单实现,你第一步都分析到了:重点是计算出每一位的值,所以我认为应该用一个相对比较大的数组或是链表来表示结果的每一个位,然后迭代计算每个位上的值。(注意满10进位)
0 请登录后投票
   发表时间:2012-04-23  
求数a,aa,aaa,…,aa…a 的前n项和Sn.其中a属于(1-9)

第n项为aa...a = a/9 * (10^n-1)

所以前n项和Sn = a/9 * [(10-1) + (10^2-1) + ......(10^n-1)]

根据等比数列公式Sn=a1 * (1-q^n) / 1-q, 原式可写为:

Sn = a/9 * [(10*(10^n-1)/10-1)-n]
0 请登录后投票
   发表时间:2012-04-24   最后修改:2012-04-24
楼上的公式不对,当n=1,n=2时结果都不对


1个a时s=a=1*a
1个a时s=a+aa=12*a
3个a时s=a+aa+aaa=123*a
4个a时s=a+aa+aaa+aaaa=1234*a
...
9个a时s=123456789*a

所以只需要算出前面的系数即可。


int k=0;
for(int i=1;i<=N;i++){
  k=10*k+i;
}
System.out.println(k*a);
0 请登录后投票
   发表时间:2012-04-24  
mfkvfn 写道
楼上的公式不对,当n=1,n=2时结果都不对


1个a时s=a=1*a
1个a时s=a+aa=12*a
3个a时s=a+aa+aaa=123*a
4个a时s=a+aa+aaa+aaaa=1234*a
...
9个a时s=123456789*a

所以只需要算出前面的系数即可。


int k=0;
for(int i=1;i<=N;i++){
  k=10*k+i;
}
System.out.println(k*a);


哪里不对了? 你告诉我.这是我运行的结果,真搞不明白,自己不认真看就说别人的不对!!我第一个回帖给出的是数学公式!非得让我把程序也写出来吗?:
private static int sum(int a, int n)
{
	return (int) (a * ((10*(Math.pow(10, n)-1)/9)-n) / 9);
}
public static void main(String args[])
{
	for(int n=1;n<9;n++)
	{
		System.out.println(sum(1,n));
	}
}

1
12
123
1234
12345
123456
1234567
12345678
0 请登录后投票
   发表时间:2012-04-24  
beitongmoming 写道
mfkvfn 写道
楼上的公式不对,当n=1,n=2时结果都不对


1个a时s=a=1*a
1个a时s=a+aa=12*a
3个a时s=a+aa+aaa=123*a
4个a时s=a+aa+aaa+aaaa=1234*a
...
9个a时s=123456789*a

所以只需要算出前面的系数即可。


int k=0;
for(int i=1;i<=N;i++){
  k=10*k+i;
}
System.out.println(k*a);


哪里不对了? 你告诉我.这是我运行的结果,真搞不明白,自己不认真看就说别人的不对!!我第一个回帖给出的是数学公式!非得让我把程序也写出来吗?:
private static int sum(int a, int n)
{
	return (int) (a * ((10*(Math.pow(10, n)-1)/9)-n) / 9);
}
public static void main(String args[])
{
	for(int n=1;n<9;n++)
	{
		System.out.println(sum(1,n));
	}
}

1
12
123
1234
12345
123456
1234567
12345678

你代码用的公式是Sn = a * [(10-1) + (10^2-1) + ......(10^n-1)] /9

之前发的公式是Sn = a/9 * [(10-1) + (10^2-1) + ......(10^n-1)]
0 请登录后投票
   发表时间:2012-04-25   最后修改:2012-04-25
引用
哪里不对了? 你告诉我.这是我运行的结果,真搞不明白,自己不认真看就说别人的不对!!我第一个回帖给出的是数学公式!非得让我把程序也写出来吗?:

哪里都不对,真搞不明白,自己不认真检查就说别人“说不对”是不对的。


原来3楼的公式是   Sn = a/9 * [(10*(10^n-1)/10-1)-n]
现在5楼的公式是   Sn = a * [10*(10^n-1)/9-n] / 9

你再好好检查一下3楼的公式是不是对的?
Sn = a/9 * [(10*(10^n-1)/10-1)-n]
    = a/9 * [(    10*(10^n-1)/10  -1)-n]
    = a/9 * [(   (10^n-1)*10/10   -1)-n]
    = a/9 * [(   (10^n-1)   -1)-n]
    = a/9 * [10^n-2-n]
a=1,n=1时结果是7/9
a=1,n=2时结果是98/9
0 请登录后投票
   发表时间:2012-04-25   最后修改:2012-04-25
mfkvfn 写道
引用
哪里不对了? 你告诉我.这是我运行的结果,真搞不明白,自己不认真看就说别人的不对!!我第一个回帖给出的是数学公式!非得让我把程序也写出来吗?:

哪里都不对,真搞不明白,自己不认真检查就说别人“说不对”是不对的。


原来3楼的公式是   Sn = a/9 * [(10*(10^n-1)/10-1)-n]
现在5楼的公式是   Sn = a * [10*(10^n-1)/9-n] / 9

你再好好检查一下3楼的公式是不是对的?
Sn = a/9 * [(10*(10^n-1)/10-1)-n]
    = a/9 * [(    10*(10^n-1)/10  -1)-n]
    = a/9 * [(   (10^n-1)*10/10   -1)-n]
    = a/9 * [(   (10^n-1)   -1)-n]
    = a/9 * [10^n-2-n]
a=1,n=1时结果是7/9
a=1,n=2时结果是98/9


三楼的:
Sn = a/9 * [(10*(10^n-1)/10-1)-n]
   = a/9 * ((10*(10^n-1)/9)-n)
   = a * ((10*(10^n-1)/9)-n) / 9


五楼的:
Sn = a * ((10*(10^n-1)/9)-n) / 9

真的麻烦你再看一边....我彻底被你打败了..
何况你的推导是错的:
= a/9 * [(   (10^n-1)*10/10   -1)-n]
= a/9 * [(   (10^n-1)   -1)-n] ?????? //你再好好看看,能相等吗???

....如果我的公式错了,绝对不会得到正确的结果的.
0 请登录后投票
   发表时间:2012-04-25  
xxligang 写道
beitongmoming 写道
mfkvfn 写道
楼上的公式不对,当n=1,n=2时结果都不对


1个a时s=a=1*a
1个a时s=a+aa=12*a
3个a时s=a+aa+aaa=123*a
4个a时s=a+aa+aaa+aaaa=1234*a
...
9个a时s=123456789*a

所以只需要算出前面的系数即可。


int k=0;
for(int i=1;i<=N;i++){
  k=10*k+i;
}
System.out.println(k*a);


哪里不对了? 你告诉我.这是我运行的结果,真搞不明白,自己不认真看就说别人的不对!!我第一个回帖给出的是数学公式!非得让我把程序也写出来吗?:
private static int sum(int a, int n)
{
	return (int) (a * ((10*(Math.pow(10, n)-1)/9)-n) / 9);
}
public static void main(String args[])
{
	for(int n=1;n<9;n++)
	{
		System.out.println(sum(1,n));
	}
}

1
12
123
1234
12345
123456
1234567
12345678

你代码用的公式是Sn = a * [(10-1) + (10^2-1) + ......(10^n-1)] /9

之前发的公式是Sn = a/9 * [(10-1) + (10^2-1) + ......(10^n-1)]

有什么区别吗??
0 请登录后投票
   发表时间:2012-04-25   最后修改:2012-04-25

好吧,也许是我没把括号写明白,我再发一次(附件是公式):

根据等比数列公式Sn=a1 * (1-q^n) / 1-q, 原式可写为:

Sn = a/9 * [(10*(10^n-1)/10-1)-n]

也就是:注意!是除以10-1,也就是除以9!! 看下等比工式,麻烦先......
Sn = a/9 * [(10*(10^n-1)/(10-1))-n]

行了,此贴就到这里吧. 我对javaeye里同学的初等代数水平真的是望而却步啊...也许在这里谈论数学本身就是个错误.
  • 大小: 18.9 KB
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics