AcWing 871. 约数之和-代码注释-golang
原题链接
简单
作者:
望哥
,
2020-07-17 19:49:24
,
所有人可见
,
阅读 747
package main
import "fmt"
import "bufio"
import "os"
var reader = bufio.NewReader(os.Stdin)
var writer = bufio.NewWriter(os.Stdout)
const N = uint64(1e9)+7
var d = map[int]int{}
func addPrimeExponent(i,c int){
if _,exist:=d[i];exist{
c+=d[i]
}
d[i] = c
}
func primes(a int) {
var cnt int
for i:=2;i<=a/i;i++{
if a%i == 0 {
cnt,a = 1, a/i
for a%i ==0 {
cnt++
a/=i
}
addPrimeExponent(i,cnt)
}
}
if a>1{
addPrimeExponent(a,1)
}
}
func main(){
var n,a int
fmt.Fscan(reader,&n)
for i:=0;i<n;i++{
fmt.Fscan(reader, &a)
primes(a)
}
var res uint64 = 1
for k,v:=range d{
var t uint64 = 1
for i:=0;i<v;i++{
t = ((t*uint64(k))+1) % N
}
res = (res* t) %N
}
fmt.Println(res%N)
}