30: digit fifth powers

This commit is contained in:
VicRen
2020-10-30 12:28:47 +08:00
parent 6365bf40b0
commit 1d954c8d77
2 changed files with 110 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
package main
import "fmt"
func main() {
sum := 0
for i := 2; i < 355000; i++ {
if sumOfFifthPowerOfDigits(i) == int64(i) {
sum += i
}
}
fmt.Println(sum)
}
func sumOfFifthPowerOfDigits(n int) int64 {
number := n
sum := int64(0)
for number > 0 {
x := number % 10
sum += fifthPower(x)
number /= 10
}
return sum
}
func fifthPower(n int) int64 {
p := int64(1)
for i := 0; i < 5; i++ {
p *= int64(n)
}
return p
}

View File

@@ -0,0 +1,78 @@
package main
import (
"testing"
)
func Test_fifthPower(t *testing.T) {
type args struct {
n int
}
tests := []struct {
name string
args args
want int64
}{
{
"1",
args{1},
1,
},
{
"2",
args{2},
32,
},
{
"9",
args{9},
59049,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := fifthPower(tt.args.n); got != tt.want {
t.Errorf("fifthPower() = %v, want %v", got, tt.want)
}
})
}
}
func Test_sumOfFifthPowerOfDigits(t *testing.T) {
type args struct {
n int
}
tests := []struct {
name string
args args
want int64
}{
{
"1",
args{1},
1,
},
{
"11",
args{11},
2,
},
{
"111",
args{111},
3,
},
{
"222",
args{222},
96,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := sumOfFifthPowerOfDigits(tt.args.n); got != tt.want {
t.Errorf("sumOfFifthPowerOfDigits() = %v, want %v", got, tt.want)
}
})
}
}