这题wa的莫名其妙,郁闷了一下午,队友暴力一发跟我答案也是一样。后来队友说试试把%I64d换成%lld,果然一下ac。。。(暴露了在soj做题少。。

ac之后排在ranklist的最后一名。。。目前也想不到什么优化了。。

还有就是以后对于longlong直接就用cout和cin。。

或者像璟璟说的,热身赛的时候测试一下。。。

题目链接:

http://acm.scu.edu.cn/soj/problem.action?id=4467

题意:

给定n,计算∑gcd(i,n)(i≤n,n<109)。

分析:

想明白一点

如果d是n的一个约数,那么1≤i≤n中gcd(i,n)=d的个数是φ(n/d)

(φ(Nd)代表的是从1到n中与n最大公约数为d的个数)

然后求出因数搞一搞~

代码:

#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
typedef long long ll;
const int maxn = 1e6 + 10;
int flag[maxn], prime[maxn];
int tot = 0;
void getprime()
{
fill(flag, flag + maxn, 1);
for(int i = 2; i < maxn; i++){
if(flag[i]){
prime[tot++] = i;
for(int j = 2 * i; j < maxn; j += i){
flag[j] = 0;
}
}
}
}
ll euler(int n)
{
ll ans = n;
for(int i = 0; i < tot && prime[i] * prime[i] <= n; i++){
if(n % prime[i] == 0){
ans = ans / prime[i] * (prime[i] - 1);
while(n % prime[i] == 0) n /= prime[i];
}
}
if(n != 1) ans = ans / n * (n - 1);
return ans;
}
int main (void)
{
int n;
getprime();
while(~scanf("%d", &n)){
ll ans = 0;
for(int i = 1; i <= sqrt(n); i++){
if(n % i == 0){
ans += euler(n / i) * i;
if(n / i != i) ans += euler(i) * (n / i);
}
}
printf("%lld\n", ans);
}
return 0;
}

SOJ 4467 easyproblem 2【欧拉函数 最大公因数和】的更多相关文章

  1. HDOJ 1787 GCD Again(欧拉函数)

    GCD Again Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  2. poj2480(利用欧拉函数的积性求解)

    题目链接: http://poj.org/problem?id=2480 题意:∑gcd(i, N) 1<=i <=N,就这个公式,给你一个n,让你求sum=gcd(1,n)+gcd(2, ...

  3. 欧拉函数:HDU1787-GCD Again(欧拉函数的模板)

    GCD Again Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  4. [bzoj2005][Noi2010][能量采集] (容斥 or 欧拉函数)

    Description 栋栋有一块长方形的地,他在地上种了一种能量植物,这种植物可以采集太阳光的能量.在这些植物采集能量后, 栋栋再使用一个能量汇集机器把这些植物采集到的能量汇集到一起. 栋栋的植物种 ...

  5. 初等数论-Base-1(筛法求素数,欧拉函数,欧几里得算法)

    前言 初等数论在OI中应用的基础部分,同机房的AuSquare和zhou2003君早就写完了,一直划水偷懒的Hk-pls表示很方,这才开始了这篇博客. \(P.S.\)可能会分部分发表. Base-1 ...

  6. hdu2588 GCD (欧拉函数)

    GCD 题意:输入N,M(2<=N<=1000000000, 1<=M<=N), 设1<=X<=N,求使gcd(X,N)>=M的X的个数.  (文末有题) 知 ...

  7. BZOJ 2705: [SDOI2012]Longge的问题 [欧拉函数]

    2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 2553  Solved: 1565[Submit][ ...

  8. BZOJ 2818: Gcd [欧拉函数 质数 线性筛]【学习笔记】

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 4436  Solved: 1957[Submit][Status][Discuss ...

  9. COGS2531. [HZOI 2016]函数的美 打表+欧拉函数

    题目:http://cogs.pw/cogs/problem/problem.php?pid=2533 这道题考察打表观察规律. 发现对f的定义实际是递归式的 f(n,k) = f(0,f(n-1,k ...

随机推荐

  1. Git使用简析

    推送本地操作 初始化一个本地Git仓库,在需要添加版本控制的文件夹根目录中使用git init命令. 添加文件到本地Git仓库: git add 文件名 # 添加文件到暂存区 git add . # ...

  2. PMP项目管理学习笔记(3)——过程框架

    所有项目,不论大小,都可以分解为过程组: 如果项目规模很大,可以分阶段管理,每个阶段都要经过上面的五个过程组,从启动到收尾. 阶段的类型: 顺序阶段: 一个阶段完成后进入下个阶段. 重叠阶段: 有时需 ...

  3. PHP一句话后门过狗姿势万千之理论篇

    写在前面: 过狗相关的资料网上也是有很多,所以在我接下来的文章中,可能观点或者举例可能会与网上部分雷同,或者表述不够全面. 但是我只能说,我所传达给大家的信息,是我目前所掌握或者了解的,不能保证所有人 ...

  4. Eclipse添加默认的JRE

    打开eclipse,依次点击如下选项Window->Preferences-> Java -> Installed JREs.步骤见下图.   选中Installed JREs选项出 ...

  5. (转)配置Spring管理的bean的作用域

    http://blog.csdn.net/yerenyuan_pku/article/details/52833477 Spring管理的bean的作用域有: singleton 在每个Spring ...

  6. 基于Zabbix API文档二次开发与java接口封装

    (继续贴一篇之前工作期间写的经验案例) 一.           案例背景 我负责开发过一个平台的监控报警模块,基于zabbix实现,需要对zabbix进行二次开发. Zabbix官方提供了Rest ...

  7. CodeForces - 1059D——二分/三分

    题目 题目链接 简单的说,就是作一个圆包含所有的点且与x轴相切,求圆的最小半径 方法一 分析:求最小,对半径而言肯定满足单调性,很容易想到二分.我们二分半径,然后由于固定了与X轴相切,我们对于每一个点 ...

  8. 激活函数:Swish: a Self-Gated Activation Function

    今天看到google brain 关于激活函数在2017年提出了一个新的Swish 激活函数. 叫swish,地址:https://arxiv.org/abs/1710.05941v1 pytorch ...

  9. QT+常见控件+tab Widget 和Stacked Widget

    首先:这里介绍以下tab Widget 和Stacked Widget 之间的区别和使用的方法: tab Widget控件可以直接的进行切换,Stacked Widget却不可以直接在界面上进行切换, ...

  10. PHP17 PDO

    学习要点 PDO简要 PDO对象 PDO对象的使用 PDOStatement对象 PDO事务处理 PDO简要 PHP支持那些数据库操作 MySQL,Oracle,SQLServer,SQLite.Po ...