| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | 
							- // The exponential of 11
 
- // 3fsv3 - collabedit.com
 
- package main
 
- import "fmt"
 
- // Node ...
 
- type Node struct {
 
- 	val  int
 
- 	next *Node
 
- }
 
- func reverse(head *Node) *Node {
 
- 	if head == nil || head.next == nil {
 
- 		return head
 
- 	}
 
- 	dummy := Node{-1, nil}
 
- 	tail := head.next
 
- 	for tail != nil {
 
- 		tmp := tail.next
 
- 		tail.next = dummy.next
 
- 		dummy.next = tail
 
- 		tail = tmp
 
- 	}
 
- 	head.next = dummy.next
 
- 	return head
 
- }
 
- func pow(n int) string {
 
- 	base := []byte{'1', '1'}
 
- 	res := []byte{'1'}
 
- 	for n != 0 {
 
- 		if n&1 == 1 {
 
- 			res = mul(res, base)
 
- 		}
 
- 		base = mul(base, base)
 
- 		n >>= 1
 
- 	}
 
- 	for l, r := 0, len(res)-1; l < r; l, r = l+1, r-1 {
 
- 		res[l], res[r] = res[r], res[l]
 
- 	}
 
- 	return string(res)
 
- }
 
- func mul(a, b []byte) []byte {
 
- 	m, n := len(a), len(b)
 
- 	c := make([]byte, m+n)
 
- 	for i := range c {
 
- 		c[i] = '0'
 
- 	}
 
- 	for i := 0; i < m; i++ {
 
- 		for j := 0; j < n; j++ {
 
- 			res := (a[i] - '0') * (b[j] - '0')
 
- 			c[i+j] += res
 
- 		}
 
- 	}
 
- 	mod := 0
 
- 	for i := 0; i < len(c); i++ {
 
- 		c[i] += byte(mod)
 
- 		mod = int(c[i]-'0') / 10
 
- 		c[i] = byte(int(c[i]-'0')%10 + '0')
 
- 	}
 
- 	i := m + n
 
- 	for ; 1 <= i; i-- {
 
- 		if c[i-1] != '0' {
 
- 			break
 
- 		}
 
- 	}
 
- 	if i == 0 {
 
- 		return c[:i+1]
 
- 	}
 
- 	return c[:i]
 
- }
 
- func main() {
 
- 	fmt.Println(pow(9999))
 
- }
 
 
  |