约数之和
-
核心思想:
-
#include<iostream> #include<algorithm> #include<vector> #include<unordered_map> using namespace std; typedef long long LL; const int N = 110 , mod = 1e9+7; int main() { int n; cin>>n; 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] ++; } LL res = 1; for(auto p : primes) { int a = p.first , b = p.second; LL t = 1; while(b--) t = (t * a + 1) % mod; //求p方+p+1之类的 res = res * t % mod; //公式 全部乘起来 } cout<<res; }
-