黑马程序员技术交流社区

标题: a + aa + aaa...的问题 [打印本页]

作者: wasabi    时间: 2016-9-22 21:33
标题: a + aa + aaa...的问题
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
         * 例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
                程序分析:关键是计算出每一项的值。
         */
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入数字的个数");
                int a = sc.nextInt();
                System.out.println("请输入一个数字");
                int b = sc.nextInt();
                String s1 = b + "";
                String s2 = "";
                int sum = 0;
                String[] arr = new String[a];
                for (int i = 0; i < arr.length; i++) {
                        s2 += s1;
                        arr[i]= s2;
                }
                for (String string : arr) {
                        sum += Integer.parseInt(string);
                }
                System.out.println(sum);
        }
这个写法有个bug   负数就不行了,有没有其他思路的解法


作者: 梦魇0023    时间: 2016-9-22 21:54
我用这个方法完成的
/*
*题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。
例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
程序分析:        关键是计算出每一项的值,从大到小可以用/10来取得这样先求出最大的
                        数就可以求出所有的数。
*/
import java.util.Scanner;

class Game {
        public static void main (String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个数字");
                int a = sc.nextInt();
                System.out.println("几个数字相加?");
                int b = sc.nextInt();
                int max = 0;     
                int sum = 0;       
                for (int j = 0 ;j < b ; j++ ) {
                        max += a*(int)Math.pow(10,j);        //通过循环 求出了最大的一个数       
                }
                for (int i = 0 ;i < b ; i++ ) {
                        sum += max/(int)Math.pow(10,i);  //最大的数不断除10求出次大的数,然后累加给sum
                }
                System.out.println(sum);
        }       
}
作者: lipeng518    时间: 2016-9-22 22:10
其实我感觉使用集合效果会好一点,而且能直接计算
作者: 17721165644    时间: 2016-9-22 22:15
用递归:2*n + 2*10*(n-1)+.....
作者: wasabi    时间: 2016-9-23 21:42
梦魇0023 发表于 2016-9-22 21:54
我用这个方法完成的
/*
*题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

你不是不和我说话了吗?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2