给出一个n,求1-n这n个数,同n的最小公倍数的和。
例如:n = 6,1,2,3,4,5,6 同6的最小公倍数分别为6,6,6,12,30,6,加在一起 = 66。

由于结果很大,输出Mod 1000000007的结果。
Input
  1. 1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 50000)
  2. 2 - T + 1行:T个数A[i](A[i] <= 10^9)
Output
  1. T行,输出对应的最小公倍数之和
Input示例
  1. 3
  2. 5
  3. 6
  4. 9
Output示例
  1. 55
  2. 66
  3. 279
    ————————————————————————
    公式推导
    不过这里 最后枚举约数的时候 因为前面已经进行过质因数分解 所以可以直接枚举各个因数的次数就可以了
    这样比直接枚举快很多(不会T QAQ
  1. #include<cstdio>
  2. #include<cstring>
  3. #include<algorithm>
  4. #define LL long long
  5. const int M=1e5+,mod=1e9+,P=(mod+)/,mx=4e4+;
  6. using std::max;
  7. int read(){
  8. int ans=,f=,c=getchar();
  9. while(c<''||c>''){if(c=='-') f=-; c=getchar();}
  10. while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
  11. return ans*f;
  12. }
  13. int T,n,p[M],cnt,h[M],pri[mx],xp;
  14. LL v,ans,vis[mx];
  15. LL ly,yy;
  16. int F(int x){for(int i=;i<=cnt;i++)if(x%p[i]==) x=x/p[i]*(p[i]-); return x;}
  17. LL inv(int a,int b,LL&x,LL&y){
  18. if(!b){x=,y=;return a;}
  19. LL g=inv(b,a%b,y,x);
  20. y=(y-a/b*x)%mod;
  21. return g;
  22. }
  23. void dfs(int step,LL x){
  24. if(step==cnt+){
  25. if(x!=){
  26. inv(n/x,mod,ly,yy); ly=(ly+mod)%mod;
  27. ans=(ans+1LL*F(x)*n%mod*P%mod*ly%mod)%mod;
  28. }
  29. return ;
  30. }
  31. LL sum=;
  32. for(int i=;i<=h[step];i++){
  33. sum=(!i?:sum*p[step]);
  34. dfs(step+,x*sum);
  35. }
  36. }
  37. int main(){
  38. T=read();
  39. for(int i=;i<=mx;i++)if(!vis[i]){
  40. pri[++xp]=i; vis[i]=;
  41. for(int j=*i;j<=mx;j+=i) vis[j]=;
  42. }
  43. while(T--){
  44. cnt=; ans=;
  45. n=read(); v=n;
  46. for(LL x=;pri[x]*pri[x]<=v;x++)if(v%pri[x]==){
  47. p[++cnt]=pri[x]; h[cnt]=;
  48. while(v%pri[x]==) v/=pri[x],h[cnt]++;
  49. }
  50. if(v!=) p[++cnt]=v,h[cnt]=;
  51. dfs(,); printf("%lld\n",(n*ans+n)%mod);
  52. }
  53. return ;
  54. }
  1.  
  1.  

51nod 1363 最小公倍数之和 ——欧拉函数的更多相关文章

  1. 51nod - 1363 - 最小公倍数之和 - 数论

    https://www.51nod.com/Challenge/Problem.html#!#problemId=1363 求\(\sum\limits_{i=1}^{n}lcm(i,n)\) 先换成 ...

  2. 51nod 1040 最大公约数之和 欧拉函数

    1040 最大公约数之和 题目连接: https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1040 Description 给 ...

  3. 51nod 1227 平均最小公倍数【欧拉函数+杜教筛】

    以后这种题能用phi的就不要用mu-mu往往会带着个ln然后被卡常致死 把题目要求转换为前缀和相减的形式,写出来大概是要求这样一个式子: \[ \sum_{i=1}^{n}\sum_{j=1}^{i} ...

  4. 【51Nod 1363】最小公倍数之和(欧拉函数)

    题面 传送门 题解 拿到式子的第一步就是推倒 \[ \begin{align} \sum_{i=1}^nlcm(n,i) &=\sum_{i=1}^n\frac{in}{\gcd(i,n)}\ ...

  5. 51nod 1363 最小公倍数的和 欧拉函数+二进制枚举

    1363 最小公倍数之和 题目来源: SPOJ 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 160 给出一个n,求1-n这n个数,同n的最小公倍数的和.例如:n = 6,1,2,3 ...

  6. 51nod 1040 最大公约数之和(欧拉函数)

    1040 最大公约数之和 题目来源: rihkddd 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题   给出一个n,求1-n这n个数,同n的最大公约数的和.比如: ...

  7. [51Nod 1244] - 莫比乌斯函数之和 & [51Nod 1239] - 欧拉函数之和 (杜教筛板题)

    [51Nod 1244] - 莫比乌斯函数之和 求∑i=1Nμ(i)\sum_{i=1}^Nμ(i)∑i=1N​μ(i) 开推 ∑d∣nμ(d)=[n==1]\sum_{d|n}\mu(d)=[n== ...

  8. 51nod 1239 欧拉函数之和(杜教筛)

    [题目链接] https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1239 [题目大意] 计算欧拉函数的前缀和 [题解] 我们 ...

  9. 欧拉函数之和(51nod 1239)

    对正整数n,欧拉函数是小于或等于n的数中与n互质的数的数目.此函数以其首名研究者欧拉命名,它又称为Euler's totient function.φ函数.欧拉商数等.例如:φ(8) = 4(Phi( ...

随机推荐

  1. SDUST OJ 时间类的加、减法赋值运算

    Problem F: 时间类的加.减法赋值运算 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 3801  Solved: 2210[Submit][St ...

  2. lintcode-18-带重复元素的子集

    带重复元素的子集 给定一个可能具有重复数字的列表,返回其所有可能的子集 注意事项 子集中的每个元素都是非降序的 两个子集间的顺序是无关紧要的 解集中不能包含重复子集 样例 如果 S = [1,2,2] ...

  3. <Android>spinner/AutoCompleteTextView绑定适配器

    position = (Spinner)findViewById(R.id.position); String[] str = {"CEO","CFO",&qu ...

  4. linux 相关的问题

    1,查找当前目录下的文件名,并重定向到文件t中 ls > t mac 下快速补全目录名快捷键tab

  5. Dojo初探

    Dojo 是一个由 Dojo 基金会开发的 Javascript 工具包, 据说受到 IBM 的永久支持,其包括四个部分: dojo, dijit, dojox, util dojo: 有时也被称作 ...

  6. Abp的AspNetZero5.0版本无法使用ctrl+f5调式

    AspNetZero是基于Abp框架开发的商业程序,最近从Abp交流群中得知5.0版本开始加入了防盗版的功能,在vs中也无法使用ctrl+f5进行调试.经过两天的摸索,我发现不能进行调试的原因也是因为 ...

  7. byte字节的输入流 建议使用字节数组形式接受内容 因为当输入流是汉字时候 会超出字节的范围 出现无法读取的现象

    byte字节的输入流 建议使用字节数组形式接受内容 因为当输入流是汉字时候 会超出字节的范围 出现无法读取的现象

  8. 【bzoj3437】小P的牧场 斜率优化dp

    题目描述 背景 小P是个特么喜欢玩MC的孩纸... 描述 小P在MC里有n个牧场,自西向东呈一字形排列(自西向东用1…n编号),于是他就烦恼了:为了控制这n个牧场,他需要在某些牧场上面建立控制站,每个 ...

  9. Android命名格式化详解

     严格换行 一般情况下一个“:”一换行 建议函数的“{}”分别占一行 例:public void ooSomething() { …… } 不要用: 例:public void doSomething ...

  10. springboot2.0 如何异步操作,@Async失效,无法进入异步

    springboot异步操作可以使用@EnableAsync和@Async两个注解,本质就是多线程和动态代理. 一.配置一个线程池 @Configuration @EnableAsync//开启异步 ...