解题思路:
输入一个4位数
1.分解4位整数变成一个数组
2.排序(无论顺序还是倒序)
3.这里限制了4位整数,所以比较简单,直接计算最大,最小数
4.计算后判断是否为0或者6174
package main
import (
"fmt"
)
func main() {
var n int
_, _ = fmt.Scanf("%d", &n)
for true {
var number [4]int
temp := n
i := 3
for temp > 9 {
number[i] = temp % 10
temp = (temp - number[i]) / 10
i--
}
number[i] = temp
insertion_sort(&number)
max := number[3] * 1000 + number[2] * 100 + number[1] * 10 + number[0]
min := number[0] * 1000 + number[1] * 100 + number[2] * 10 + number[3]
n = max - min
fmt.Printf("%04d - %04d = %04d\n", max, min, n)
if n == 6174 || n == 0 {
break
}
}
}
func insertion_sort(number *[4]int) {
for j:=1; j<4; j++ {
key := number[j]
i := 0
for i = j-1;i >= 0 && number[i] > key ;i-- {
number[i+1] = number[i]
}
number[i+1] = key
}
}