parent
bee5ef9913
commit
1d004d5f8c
@ -1 +1,22 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
|
import "math" |
||||||
|
|
||||||
|
func Work14() []int { |
||||||
|
resultSet := make([]int, 0) |
||||||
|
for num := 100; num <= 999; num++ { |
||||||
|
// 开方取整,再平方判,断是否能获得原来的数,来识别是否为完全平方数
|
||||||
|
intSqrt := int(math.Sqrt(float64(num)) + 0.5) |
||||||
|
if intSqrt*intSqrt != num { |
||||||
|
continue |
||||||
|
} |
||||||
|
|
||||||
|
// num的百位,十位,个位数,其中有相等即可
|
||||||
|
a, b, c := num/100, num%100/10, num%10 |
||||||
|
if a == b || a == c || b == c { |
||||||
|
resultSet = append(resultSet, num) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return resultSet |
||||||
|
} |
||||||
|
@ -1 +1,33 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
|
func Work15() map[string]string { |
||||||
|
// 甲队成员
|
||||||
|
teamA := []string{"A", "B", "C"} |
||||||
|
|
||||||
|
// 乙队成员
|
||||||
|
teamB := []string{"X", "Y", "Z"} |
||||||
|
|
||||||
|
match := map[string]string{} |
||||||
|
|
||||||
|
// 遍历所有可能的匹配方式
|
||||||
|
for _, b := range teamB { |
||||||
|
for _, a := range teamA { |
||||||
|
// A不和X比赛
|
||||||
|
if a == "A" && b == "X" { |
||||||
|
continue |
||||||
|
} |
||||||
|
|
||||||
|
// C不和X或Z比赛
|
||||||
|
if a == "C" && (b == "X" || b == "Z") { |
||||||
|
continue |
||||||
|
} |
||||||
|
|
||||||
|
// 如果没人匹配,当前就作为对手匹配
|
||||||
|
if _, exists := match[b]; !exists { |
||||||
|
match[a] = b |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return match |
||||||
|
} |
||||||
|
@ -1 +1,18 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
|
func Work16(n int) []int { |
||||||
|
result := make([]int, 0) |
||||||
|
if n%4 == 0 { |
||||||
|
result = append(result, 7) |
||||||
|
} |
||||||
|
|
||||||
|
if n%7 == 0 { |
||||||
|
result = append(result, 7) |
||||||
|
} |
||||||
|
|
||||||
|
if n%9 == 0 { |
||||||
|
result = append(result, 9) |
||||||
|
} |
||||||
|
|
||||||
|
return result |
||||||
|
} |
||||||
|
@ -1 +1,10 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
|
func Work17(a, b, c int) int { |
||||||
|
result := 70*a + 21*b + 15*c |
||||||
|
for result > 105 { |
||||||
|
result -= 105 |
||||||
|
} |
||||||
|
|
||||||
|
return result |
||||||
|
} |
||||||
|
@ -1 +1,45 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
|
func Work18(callback func(four, five int)) { |
||||||
|
// 检查两个数是否由9个不同的数字组成
|
||||||
|
checkDigitUnique := func(a, b int) bool { |
||||||
|
// 创建一个map来跟踪每个数字是否已经出现过
|
||||||
|
mark := map[int]bool{} |
||||||
|
|
||||||
|
// 检查第一个数的每一位数字
|
||||||
|
for ; a > 0; a /= 10 { |
||||||
|
// 如果数字已经在map中,直接返回false
|
||||||
|
if _, exists := mark[a%10]; exists { |
||||||
|
return false |
||||||
|
} else { |
||||||
|
// map标记
|
||||||
|
mark[a%10] = true |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
for ; b > 0; b /= 10 { |
||||||
|
if _, exists := mark[b%10]; exists { |
||||||
|
return false |
||||||
|
} else { |
||||||
|
mark[b%10] = true |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// map中的数字总数为9,返回true
|
||||||
|
return len(mark) == 9 |
||||||
|
} |
||||||
|
|
||||||
|
// 遍历所有的四位数
|
||||||
|
for four := 1000; four <= 9999; four++ { |
||||||
|
// 计算当前四位数的两倍
|
||||||
|
five := 2 * four |
||||||
|
|
||||||
|
// 检查结果是否为五位数
|
||||||
|
if 10000 <= five && five <= 99999 { |
||||||
|
// 调用checkUnique函数检查数字是否互不相同,条件满足则回调
|
||||||
|
if checkDigitUnique(four, five) { |
||||||
|
callback(four, five) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
@ -1 +1,31 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
|
import ( |
||||||
|
"math" |
||||||
|
"strings" |
||||||
|
) |
||||||
|
|
||||||
|
var ( |
||||||
|
_hexMap = map[byte]int{ |
||||||
|
'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, |
||||||
|
'5': 5, '6': 6, '7': 7, '8': 8, '9': 9, |
||||||
|
'A': 10, 'B': 11, 'C': 12, 'D': 13, 'E': 14, 'F': 15, |
||||||
|
} |
||||||
|
) |
||||||
|
|
||||||
|
func Work19(hexStr string) int { |
||||||
|
// 将输入字符串转换为大写,以便匹配映射表
|
||||||
|
hexStr = strings.ToUpper(hexStr) |
||||||
|
|
||||||
|
decValue := 0 |
||||||
|
// 从字符串最右端开始转换每个字符
|
||||||
|
for i := 0; i < len(hexStr); i++ { |
||||||
|
char := hexStr[len(hexStr)-1-i] |
||||||
|
// 获取字符对应的十进制值,计算十进制
|
||||||
|
if value, exists := _hexMap[char]; exists { |
||||||
|
decValue += value * int(math.Pow(16, float64(i))) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return decValue |
||||||
|
} |
||||||
|
@ -1 +1,56 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
|
func Work20(callback func(x, y, z int)) { |
||||||
|
// 检查x, y, z是否包含1到9的所有数字各一次,且不包含0
|
||||||
|
checkDigit := func(x, y, z int) bool { |
||||||
|
appearCnt := make([]int, 10) // 创建一个数组来存储数字0-9的出现次数
|
||||||
|
|
||||||
|
// x的各位数字
|
||||||
|
appearCnt[x/10]++ |
||||||
|
appearCnt[x%10]++ |
||||||
|
|
||||||
|
// y的各位数字
|
||||||
|
appearCnt[y%10]++ |
||||||
|
appearCnt[y/10%10]++ |
||||||
|
appearCnt[y/100]++ |
||||||
|
|
||||||
|
// z的各位数字
|
||||||
|
appearCnt[z%10]++ |
||||||
|
appearCnt[z/10%10]++ |
||||||
|
appearCnt[z/100%10]++ |
||||||
|
appearCnt[z/1000]++ |
||||||
|
|
||||||
|
// 有0,不符合条件
|
||||||
|
if appearCnt[0] != 0 { |
||||||
|
return false |
||||||
|
} |
||||||
|
|
||||||
|
// 检查1-9出现次数
|
||||||
|
for _, cnt := range appearCnt { |
||||||
|
if cnt != 1 { |
||||||
|
return false |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return true |
||||||
|
} |
||||||
|
|
||||||
|
// 双重循环遍历所有可能的x和y组合
|
||||||
|
// x从12开始到98
|
||||||
|
for x := 12; x < 99; x++ { |
||||||
|
// y从123开始到986
|
||||||
|
for y := 123; y < 987; y++ { |
||||||
|
// 如果乘积超过9999,停止内层循环(太大了,已经不符合条件了)
|
||||||
|
z := x * y |
||||||
|
if z > 9999 { |
||||||
|
break |
||||||
|
} |
||||||
|
|
||||||
|
// 检查x, y, z各位数字情况
|
||||||
|
if checkDigit(x, y, z) { |
||||||
|
// 回调结果
|
||||||
|
callback(x, y, z) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
@ -1 +1,41 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
|
import "math" |
||||||
|
|
||||||
|
func Work21(callback func(num, sqrt int)) { |
||||||
|
// 检查两个数是否由9个不同的数字组成
|
||||||
|
checkDigitUnique := func(a, b int) bool { |
||||||
|
// 创建一个map来跟踪每个数字是否已经出现过
|
||||||
|
mark := map[int]bool{} |
||||||
|
|
||||||
|
// 检查第一个数的每一位数字
|
||||||
|
for ; a > 0; a /= 10 { |
||||||
|
// 如果数字已经在map中,直接返回false
|
||||||
|
if _, exists := mark[a%10]; exists { |
||||||
|
return false |
||||||
|
} else { |
||||||
|
// map标记
|
||||||
|
mark[a%10] = true |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
for ; b > 0; b /= 10 { |
||||||
|
if _, exists := mark[b%10]; exists { |
||||||
|
return false |
||||||
|
} else { |
||||||
|
mark[b%10] = true |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// map中的数字总数为9,返回true
|
||||||
|
return len(mark) == 9 |
||||||
|
} |
||||||
|
|
||||||
|
for num1 := 100000; num1 < 1000000; num1++ { |
||||||
|
for num2 := 100; num2 < 1000; num2++ { |
||||||
|
if math.Sqrt(float64(num1)) == float64(num2) && checkDigitUnique(num1, num2) { |
||||||
|
callback(num1, num2) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
@ -1 +1,5 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
|
func Work22() { |
||||||
|
|
||||||
|
} |
||||||
|
@ -1 +1,29 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
|
func Work24(callback func(num1, num2, result int)) { |
||||||
|
check := func(x int) bool { |
||||||
|
for ; x != 0; x /= 10 { |
||||||
|
n := x % 10 |
||||||
|
// 如果有一个数字不是素数,直接false
|
||||||
|
if n != 2 && n != 3 && n != 5 && n != 7 { |
||||||
|
return false |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return true |
||||||
|
} |
||||||
|
|
||||||
|
// num1三位数,num2一位数,遍历查找
|
||||||
|
for num1 := 100; num1 <= 9999; num1++ { |
||||||
|
for num2 := 1; num2 <= 0; num2++ { |
||||||
|
// 乘出来的结果应该是四位数
|
||||||
|
result := num1 * num2 |
||||||
|
if 1000 <= result && result <= 9999 { |
||||||
|
if check(num1) && check(num2) && check(result) { |
||||||
|
callback(num1, num2, result) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
Loading…
Reference in new issue