Language: C++

#include <bits/stdc++.h>

#define rep(i,n) for(int i=0;i<(n);i++)

using namespace std;

class mint{
	static const int MOD=1e9+7;
	int x;
public:
	mint():x(0){}
	mint(long long y){ x=y%MOD; if(x<0) x+=MOD; }

	mint& operator+=(const mint& m){ x+=m.x; if(x>=MOD) x-=MOD; return *this; }
	mint& operator-=(const mint& m){ x-=m.x; if(x<   0) x+=MOD; return *this; }
	mint& operator*=(const mint& m){ x=1LL*x*m.x%MOD; return *this; }
	mint& operator/=(const mint& m){ return *this*=inverse(m); }
	mint operator+(const mint& m)const{ return mint(*this)+=m; }
	mint operator-(const mint& m)const{ return mint(*this)-=m; }
	mint operator*(const mint& m)const{ return mint(*this)*=m; }
	mint operator/(const mint& m)const{ return mint(*this)/=m; }

	friend mint inverse(const mint& m){
		int a=m.x,b=MOD,u=1,v=0;
		while(b>0){ int t=a/b; a-=t*b; swap(a,b); u-=t*v; swap(u,v); }
		return u;
	}

	friend istream& operator>>(istream& is,mint& m){ long long t; is>>t; m=mint(t); return is; }
	friend ostream& operator<<(ostream& os,const mint& m){ return os<<m.x; }
	int to_int()const{ return x; }
};

map<long long,int> prime_factorize(long long a){
	map<long long,int> res;
	if(a%2==0){
		int cnt=0;
		do{ cnt++; a/=2; }while(a%2==0);
		res.emplace(2,cnt);
	}
	for(long long p=3;p*p<=a;p+=2) if(a%p==0) {
		int cnt=0;
		do{ cnt++; a/=p; }while(a%p==0);
		res.emplace(p,cnt);
	}
	if(a>1) res.emplace(a,1);
	return res;
}

int main(){
	int n; scanf("%d",&n);
	vector<int> a(n);
	rep(i,n) scanf("%d",&a[i]);

	auto pf=prime_factorize(1);
	rep(i,n){
		for(auto q:prime_factorize(a[i])){
			pf[q.first]=max(pf[q.first],q.second);
		}
	}

	mint L=1;
	for(auto q:pf) L*=pow(mint(q.first),q.second);

	mint ans=0;
	rep(i,n) ans+=L/a[i];
	cout<<ans<<'\n';

	return 0;
}


Compiler output:
a.cc: In function 'int main()':
a.cc:63:30: error: no matching function for call to 'pow(mint, int&)'
   63 |         for(auto q:pf) L*=pow(mint(q.first),q.second);
      |                           ~~~^~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/14/valarray:605,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/stdc++.h:166,
                 from a.cc:1:
/usr/include/c++/14/bits/valarray_after.h:549:1: note: candidate: 'template<class _Tp> std::_Expr<std::__detail::_BinClos<std::_Pow, std::_Constant, std::_ValArray, _Tp, _Tp>, _Tp> std::pow(const typename valarray<_Tp>::value_type&, const valarray<_Tp>&)'
  549 | _DEFINE_EXPR_BINARY_FUNCTION(pow, struct std::_Pow)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:549:1: note:   template argument deduction/substitution failed:
a.cc:63:30: note:   mismatched types 'const std::valarray<_Tp>' and 'int'
   63 |         for(auto q:pf) L*=pow(mint(q.first),q.second);
      |                           ~~~^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:549:1: note: candidate: 'template<class _Tp> std::_Expr<std::__detail::_BinClos<std::_Pow, std::_ValArray, std::_Constant, _Tp, _Tp>, _Tp> std::pow(const valarray<_Tp>&, const typename valarray<_Tp>::value_type&)'
  549 | _DEFINE_EXPR_BINARY_FUNCTION(pow, struct std::_Pow)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:549:1: note:   template argument deduction/substitution failed:
a.cc:63:30: note:   'mint' is not derived from 'const std::valarray<_Tp>'
   63 |         for(auto q:pf) L*=pow(mint(q.first),q.second);
      |                           ~~~^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:549:1: note: candidate: 'template<class _Tp> std::_Expr<std::__detail::_BinClos<std::_Pow, std::_ValArray, std::_ValArray, _Tp, _Tp>, _Tp> std::pow(const valarray<_Tp>&, const valarray<_Tp>&)'
  549 | _DEFINE_EXPR_BINARY_FUNCTION(pow, struct std::_Pow)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:549:1: note:   template argument deduction/substitution failed:
a.cc:63:30: note:   'mint' is not derived from 'const std::valarray<_Tp>'
   63 |         for(auto q:pf) L*=pow(mint(q.first),q.second);
      |                           ~~~^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:549:1: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::_Pow, std::_Constant, std::_Expr, typename _Dom::value_type, _Dom>, typename _Dom::value_type> std::pow(const typename _Dom::value_type&, const _Expr<_Dom1, typename _Dom1::value_type>&)'
  549 | _DEFINE_EXPR_BINARY_FUNCTION(pow, struct std::_Pow)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:549:1: note:   template argument deduction/substitution failed:
a.cc:63:30: note:   mismatched types 'const std::_Expr<_Dom1, typename _Dom1::value_type>' and 'int'
   63 |         for(auto q:pf) L*=pow(mint(q.first),q.second);
      |                           ~~~^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:549:1: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::_Pow, std::_Expr, std::_Constant, _Dom, typename _Dom::value_type>, typename _Dom::value_type> std::pow(const _Expr<_Dom1, typename _Dom1::value_type>&, const typename _Dom::value_type&)'
  549 | _DEFINE_EXPR_BINARY_FUNCTION(pow, struct std::_Pow)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:549:1: note:   template argument deduction/substitution failed:
a.cc:63:30: note:   'mint' is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
   63 |         for(auto q:pf) L*=pow(mint(q.first),q.second);
      |                           ~~~^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:549:1: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::_Pow, std::_ValArray, std::_Expr, typename _Dom::value_type, _Dom>, typename _Dom::value_type> std::pow(const valarray<typename _Dom::valarray>&, const _Expr<_Dom1, typename _Dom1::value_type>&)'
  549 | _DEFINE_EXPR_BINARY_FUNCTION(pow, struct std::_Pow)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:549:1: note:   template argument deduction/substitution failed:
a.cc:63:30: note:   mismatched types 'const std::_Expr<_Dom1, typename _Dom1::value_type>' and 'int'
   63 |         for(auto q:pf) L*=pow(mint(q.first),q.second);
      |                           ~~~^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:549:1: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::_Pow, std::_Expr, std::_ValArray, _Dom, typename _Dom::value_type>, typename _Dom::value_type> std::pow(const _Expr<_Dom1, typename _Dom1::value_type>&, const valarray<typename _Dom::value_type>&)'
  549 | _DEFINE_EXPR_BINARY_FUNCTION(pow, struct std::_Pow)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:549:1: note:   template argument deduction/substitution failed:
a.cc:63:30: note:   'mint' is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
   63 |         for(auto q:pf) L*=pow(mint(q.first),q.second);
      |                           ~~~^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:549:1: note: candidate: 'template<class _Dom1, class _Dom2> std::_Expr<std::__detail::_BinClos<std::_Pow, std::_Expr, std::_Expr, _Dom1, _Dom2>, typename _Dom1::value_type> std::pow(const _Expr<_Dom1, typename _Dom1::value_type>&, const _Expr<_Dom2, typename _Dom2::value_type>&)'
  549 | _DEFINE_EXPR_BINARY_FUNCTION(pow, struct std::_Pow)
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/bits/valarray_after.h:549:1: note:   template argument deduction/substitution failed:
a.cc:63:30: note:   'mint' is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
   63 |         for(auto q:pf) L*=pow(mint(q.first),q.second);
      |                           ~~~^~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/14/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/14/bits/stdc++.h:127:
/usr/include/c++/14/complex:2482:5: note: candidate: 'template<class _Tp, class _Up> std::complex<typename __gnu_cxx::__promote<decltype (((typename __gnu_cxx::__promote<_Tp, std::__is_integer<_Tp>::__value>::__type)(0) + (typename __gnu_cxx::__promote<_Up, std::__is_integer<_Up>::__value>::__type)(0)))>::__type> std::pow(const complex<_Tp>&, const complex<_Up>&)'
 2482 |     pow(const std::complex<_Tp>& __x, const std::complex<_Up>& __y)
      |     ^~~
/usr/include/c++/14/complex:2482:5: note:   template argument deduction/substitution failed:
a.cc:63:30: note:   'mint' is not derived from 'const std::complex<_Tp>'
   63 |         for(auto q:pf) L*=pow(mint(q.first),q.second);
      |                           ~~~^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/complex:2474:5: note: candidate: 'template<class _Tp, class _Up> std::complex<typename __gnu_cxx::__promote<decltype (((typename __gnu_cxx::__promote<_Tp, std::__is_integer<_Tp>::__value>::__type)(0) + (typename __gnu_cxx::__promote<_Up, std::__is_integer<_Up>::__value>::__type)(0)))>::__type> std::pow(const _Tp&, const complex<_Up>&)'
 2474 |     pow(const _Tp& __x, const std::complex<_Up>& __y)
      |     ^~~
/usr/include/c++/14/complex:2474:5: note:   template argument deduction/substitution failed:
a.cc:63:30: note:   mismatched types 'const std::complex<_Up>' and 'int'
   63 |         for(auto q:pf) L*=pow(mint(q.first),q.second);
      |                           ~~~^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/complex:2466:5: note: candidate: 'template<class _Tp, class _Up> std::complex<typename __gnu_cxx::__promote<decltype (((typename __gnu_cxx::__promote<_Tp, std::__is_integer<_Tp>::__value>::__type)(0) + (typename __gnu_cxx::__promote<_Up, std::__is_integer<_Up>::__value>::__type)(0)))>::__type> std::pow(const complex<_Tp>&, const _Up&)'
 2466 |     pow(const std::complex<_Tp>& __x, const _Up& __y)
      |     ^~~
/usr/include/c++/14/complex:2466:5: note:   template argument deduction/substitution failed:
a.cc:63:30: note:   'mint' is not derived from 'const std::complex<_Tp>'
   63 |         for(auto q:pf) L*=pow(mint(q.first),q.second);
      |                           ~~~^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/complex:1339:5: note: candidate: 'template<class _Tp> std::complex<_Tp> std::pow(const _Tp&, const complex<_Tp>&)'
 1339 |     pow(const _Tp& __x, const complex<_Tp>& __y)
      |     ^~~
/usr/include/c++/14/complex:1339:5: note:   template argument deduction/substitution failed:
a.cc:63:30: note:   mismatched types 'const std::complex<_Tp>' and 'int'
   63 |         for(auto q:pf) L*=pow(mint(q.first),q.second);
      |                           ~~~^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/complex:1328:5: note: candidate: 'template<class _Tp> std::complex<_Tp> std::pow(const complex<_Tp>&, const complex<_Tp>&)'
 1328 |     pow(const complex<_Tp>& __x, const complex<_Tp>& __y)
      |     ^~~
/usr/include/c++/14/complex:1328:5: note:   template argument deduction/substitution failed:
a.cc:63:30: note:   'mint' is not derived from 'const std::complex<_Tp>'
   63 |         for(auto q:pf) L*=pow(mint(q.first),q.second);
      |                           ~~~^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/complex:1294:5: note: candidate: 'template<class _Tp> std::complex<_Tp> std::pow(const complex<_Tp>&, const _Tp&)'
 1294 |     pow(const complex<_Tp>& __x, const _Tp& __y)
      |     ^~~
/usr/include/c++/14/complex:1294:5: note:   template argument deduction/substitution failed:
a.cc:63:30: note:   'mint' is not derived from 'const std::complex<_Tp>'
   63 |         for(auto q:pf) L*=pow(mint(q.first),q.second);
      |                           ~~~^~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/14/complex:1285:5: note: candidate: 'template<class _Tp> std::complex<_Tp> std::pow(const complex<_Tp>&, int)'
 1285 |     pow(const complex<_Tp>& __z, int __n)
      |     ^~~
/usr/include/c++/14/complex:1285:5: note:   template argument deduction/substitution failed:
a.cc:63: