这题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. 如何配置TomCat

    1.先查看你自己java的jdk的版本号 2.通过jdk版本号确定下载的Tomcat版本 ,因为我的是jdk 1.8的,所以要下载Tomcat 8版本 附上下载官网http://tomcat.apac ...

  2. Git搭建自己的网站服务器(Linux)

    git服务器弄了半天终于搞定了,还是记录下吧,不然下次有得忘了 流程: 服务器 构建git目录 git用户,git组作为仓库管理 ssh授权(远程无需密码接入) hook(post-receive)自 ...

  3. DB9串口引脚定义

    在单片机串口通信中,使用3根信号线就能够实现通信:RXD,TXD,GND. 经常使用的RS232串口线使用DB9端子. DB9分为公头和母头两种: 一般使用时,引脚定义如下: 连接方式: 注:RXD- ...

  4. gocode安装不上的解决办法

    mkdir -p $GOPATH/src/golang.org/x  //路径下创建此文件 cd $GOPATH/src/golang.org/x      //切换到此目录 git clone ht ...

  5. python小随笔

    关于pip安装 .\pip.exe install --ignore-installed --upgrade tensorflow-gpu python可视化库 Seaborn:是一个基于matplo ...

  6. 时间函数datetime time

    time模块 time翻译过来就是时间,有我们其实在之前编程的时候有用到过. #常用方法 1.time.sleep(secs) (线程)推迟指定的时间运行.单位为秒. 2.time.time() 获取 ...

  7. jquery实现密码强度检测

    jquery实现密码强度验证   jquery实现密码强度验证 JS代码:   $('#pass').keyup(function(e) { var strongRegex = new RegExp( ...

  8. mysql在线开启或禁用GTID模式

    在线开启步骤: 1.要求: (1)必须是5.7.6版本以上的mysql (2)GTID状态为OFF 2.开启步骤: (1):SET GLOBAL ENFORCE_GTID_CONSISTENCY = ...

  9. redhat 7.x 、redhat 6.x查看硬盘UUID方法

    1.查看磁盘分区UUID: [root@rac01 ~]# blkid /dev/sdb1: UUID="6bba92c4-0b25-4cc4-9442-ca87c563720a" ...

  10. [bzoj1022][SHOI2008]小约翰的游戏John (反Nim游戏)

    Description 小约翰经常和他的哥哥玩一个非常有趣的游戏:桌子上有n堆石子,小约翰和他的哥哥轮流取石子,每个人取 的时候,可以随意选择一堆石子,在这堆石子中取走任意多的石子,但不能一粒石子也不 ...