精华帖 (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); } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-04-23
如果输入是num是个比较大的树的话就会出现溢出的现象,所以不能用这种方法简单实现,你第一步都分析到了:重点是计算出每一位的值,所以我认为应该用一个相对比较大的数组或是链表来表示结果的每一个位,然后迭代计算每个位上的值。(注意满10进位)
|
|
返回顶楼 | |
发表时间: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] |
|
返回顶楼 | |
发表时间: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); |
|
返回顶楼 | |
发表时间: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 |
|
返回顶楼 | |
发表时间: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)] |
|
返回顶楼 | |
发表时间: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 |
|
返回顶楼 | |
发表时间: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] ?????? //你再好好看看,能相等吗??? ....如果我的公式错了,绝对不会得到正确的结果的. |
|
返回顶楼 | |
发表时间: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)] 有什么区别吗?? |
|
返回顶楼 | |
发表时间: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里同学的初等代数水平真的是望而却步啊...也许在这里谈论数学本身就是个错误. |
|
返回顶楼 | |