其中的每一小项用秦九韶算法来计算:while (a -- ) t = (t * p + 1) % mod;
Code:
//记住两个公式,约数个数,约数之和#include<iostream>#include<algorithm>#include<unordered_map>usingnamespace std;constint mod =1e9+7;intmain(){int n;
cin >> n;longlong res =1;
unordered_map<int,int> primes;while(n--){int x;
cin >> x;for(int i=2; i<=x/i; i++)while(x%i==0){
x /= i;
primes[i]++;}if(x>1)
primes[x]++;}for(auto prime : primes){int p = prime.first, a = prime.second;longlong t =1;while(a--)
t =(t*p+1)% mod;//秦九韶算法
res = res * t % mod;}
cout << res << endl;return0;}