• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Codeforces Round #157 (Div. 1) C. Li_php

php 搞代码 7年前 (2018-06-21) 137次浏览 已收录 0个评论

C. Little Elephant and LCM time limit per test 4 seconds memory limit per test 256 megabytes input standard input output standard output

The Little Elephant loves the LCM (least common multiple) operation of a non-empty set of positive integers. The result of the LCM operation of k positive integers x1,?x2,?…,?xk is the minimum positive integer that is divisible by each of numbers xi.

Let’s assume that there is a sequence of integers b1,?b2,?…,?bn. Let’s denote their LCMs as lcm(b1,?b2,?…,?bn) and the maximum of them as max(b1,?b2,?…,?bn). The Little Elephant considers a sequence b good, if lcm(b1,?b2,?…,?bn)?=?max(b1,?b2,?…,?bn).

The Little Elephant has a sequence of integers a1,?a2,?…,?an. Help him find the number of good sequences of integers b1,?b2,?…,?bn, such that for all i (1?≤?i?≤?n) the following condition fulfills: 1?≤?bi?≤?ai. As the answer can be rather large, print the remainder from dividing it by 1000000007 (109?+?7).

Input

The first line contains a single positive integer n (1?≤?n?≤?105) ― the number of integers in the sequence a. The second line contains nspace-separated integers a1,?a2,?…,?an (1?≤?ai?≤?105) ― sequence a.

Output

In the single line print a single integer ― the answer to the problem modulo 1000000007 (109?+?7).

Sample test(s)
input

4 1 4 3 2 

output

15 

input

2 6 3 

output

13
 
 
 
题意:
给你一个a序列,找出一个b序列,1?≤?bi?≤?ai,使得max(bi)=lcm(bi),问这样的bi序列有多少个。
 
思路:
先对a排序,枚举i=max(bi),对i因式分解,那么大于等于i的部分很好处理,直接pow_mod()相减,小于i的部分就任意取一个约束就够了。
 
代码:
#include  #include #include #include #include #include #define INF 0x3f3f3f3f #define maxn 100005 #define mod 1000000007 typedef long long ll; using namespace std;  int n; int a[maxn];  ll pow_mod(ll x,ll n) {     ll res = 1;     while(n)     {         if(n&1) res = res * x %mod;         x = x * x %mod;         n >>= 1;     }     return res; } void solve() {     int i,j;     ll ans=0,res;     sort(a+1,a+n+1);     for(i=1;i<=a[n];i++) // 枚举答案     {         vectorfac;         for(j=1;j*j<=i;j++) // factor         {             if(i%j==0)             {                 fac.push_back(j);                 if(j*j!=i) fac.push_back(i/j);             }         }         sort(fac.begin(),fac.end());         int pos,pre=1;         res=1;         for(j=1;j

欢迎大家阅读《Codeforces Round #157 (Div. 1) C. Li_php,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Codeforces Round #157 (Div. 1) C. Li_php

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址