• light oj 1007 Mathematically Hard (欧拉函数)


    题目地址:light oj 1007
    第一发欧拉函数。
    欧拉函数重要性质:
    设a为N的质因数。若(N % a == 0 && (N / a) % a == 0) 则有E(N)=E(N / a) * a;若(N % a == 0 && (N / a) % a != 0) 则有:E(N) = E(N / a) * (a - 1)
    对于这题来说。首先卡MLE。。

    仅仅能开一个数组。。所以把前缀和也存到欧拉数组里。

    然后卡long long。

    。要用unsigned long long 。


    代码例如以下:

    #include <iostream>
    #include <string.h>
    #include <math.h>
    #include <queue>
    #include <algorithm>
    #include <stdlib.h>
    #include <map>
    #include <set>
    #include <stdio.h>
    #include <time.h>
    using namespace std;
    #define LL long long
    #define pi acos(-1.0)
    #pragma comment(linker, "/STACK:1024000000")
    const int mod=9901;
    const int INF=0x3f3f3f3f;
    const double eqs=1e-9;
    const int MAXN=5000000+10;
    unsigned LL euler[MAXN];
    void init()
    {
            int i, j, max1=5000000;
            for(i=2;i<=max1;i++){
                    euler[i]=i;
            }
            for(i=2;i<=max1;i++){
                    if(euler[i]!=i) continue ;
                    for(j=i;j<=max1;j+=i){
                            euler[j]=euler[j]/i*(i-1);
                    }
            }
            for(i=2;i<=max1;i++){
                    euler[i]=euler[i-1]+euler[i]*euler[i];
            }
    }
    int main()
    {
            int t, l, r, icase=0;
            scanf("%d",&t);
            init();
            while(t--){
                    scanf("%d%d",&l,&r);
                    printf("Case %d: %llu
    ",++icase,euler[r]-euler[l-1]);
            }
            return 0;
    }
    
    
  • 相关阅读:
    11-Mybatis中使用PageHelper分页插件
    10-Mybatis使用注解开发
    Windows快捷键
    环境搭建
    计算机基础
    oracle语句
    oracle
    测试质量和类型
    测试基础
    项目部署和总结
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8927020.html
Copyright © 2020-2023  润新知