注册 登录
编程论坛 数据结构与算法

急!请大家帮忙这道算法题!

寻帮助 发布于 2019-04-03 02:37, 2202 次点击
总共三个问题。我用 Swift 完成了第一个。第二和第三请帮忙。您也可以用其它语言,请说明算法。


1. 整数 1 到 500, 给出每个数所有位数平方的和。 比如 (1, 1), (2, 4),(12, 5),(500, 25);
2. 找出所有这样的数:求和的这个方法 getSumOfDigits 运行多次后 (把运行结果输进去再运算),结果是 1. 比如1, 7, 10 。。。。
3. 找出 1 到 1 千万 之间这样的数, getSumOfDigits 运行 7 次以上,结果是 89.

func getSumOfDigits(n: Int) -> Int {

        let nString = String(n)
        var sum: Int = 0

        for char in nString {
            if let charInt = Int(String(char)) {
                sum += charInt * charInt
            }
        }

        return sum
    }

    func questionOne() -> [(Int, Int)] {

        var output: [(Int, Int)] = []

        for i in 1...500 {
            output.append((i, getSumOfDigits(n: i)))
        }

        return output
    }

多谢啦!
1 回复
#2
qrezhy2019-04-18 15:15
本人刚学,不足之处请见谅
第一问,public class test {
    public static void main(String[] args) {
        for (int i = 0; i <= 500; i++) {
            int a = i % 10;
            int b = i / 10 % 10;
            int c = i / 100 % 10;
            int sum = 0;
            sum = a * a + b * b + c * c;
            System.out.println(i+","+sum);




第二问,public class test {
    public static void main(String[] args) {
        for (int i = 0; i <= 500; i++) {
            int a = i % 10;
            int b = i / 10 % 10;
            int c = i / 100 % 10;
            int sum = 0;
            sum = a * a + b * b + c * c;
            if (sum != 1) {
                for (int j = 0; j <= 5000; j++) {
                    int d = sum % 10;
                    int e = sum / 10 % 10;
                    int f = sum / 100 % 10;
                    sum = d * d + e * e + f * f;
                    if (sum == 1) {
                        System.out.println(i);
                        break;
                    }
                }
            } else {
                System.out.println(i);
            }
        }
    }
}


第3问,只要是89无限循环了,所以和次数没关系

1