转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents    by---cxlove

题意:求sigma (gcd (i , j))  1 <= i < j <= n

和POJ 2480类似,如果枚举j,求的话,还是会TLE的。。。

考虑sigma(gcd (i , n)) = sigma (d * phi[n / d]) d | n。

做法同样是先预处理出phi,然后枚举gcd = d。

O(n)预处理,O(1)查询

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <set>
#include <map>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#define lowbit(x) (x & (-x))
#define Key_value ch[ch[root][1]][0]
#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;
typedef long long LL;
const int N = 1000005;
int phi[N];
LL ans[N];
void init () {for (int i = 2 ; i < N ; i ++) {if (phi[i]) continue;for (int j = i ; j < N ; j += i) {if (phi[j] == 0) phi[j] = j;phi[j] = phi[j] / i * (i - 1);}}for (int i = 2 ; i < N ; i ++)ans[i] = phi[i];for (int i = 2 ; i * i < N ; i ++) {ans[i * i] += 1LL * phi[i] * i;for (int j = i + 1 ; j * i < N ; j ++) {ans[j * i] += 1LL * phi[i] * j + 1LL * phi[j] * i;}}for (int i = 1 ; i < N ; i ++)ans[i] += ans[i - 1];
}
int main () {#ifndef ONLINE_JUDGEfreopen ("input.txt" , "r" , stdin);// freopen ("output.txt" , "w" , stdout);#endifint n ;init ();while (cin >> n && n) {cout << ans[n] << endl;}return 0;
}

转载于:https://www.cnblogs.com/pangblog/p/3331354.html

SPOJ GCDEX (数论)相关推荐

  1. BZOJ 2226 [Spoj 5971] LCMSum 最大公约数之和 | 数论

    BZOJ 2226 [Spoj 5971] LCMSum 这道题和上一道题十分类似. \[\begin{align*} \sum_{i = 1}^{n}\operatorname{LCM}(i, n) ...

  2. 数论(一)——素数,GCD,LCM

    这是一个数论系列:) 一.素数 ×费马小定理 Theorem: 设 p 是一个素数,a 是一个整数且不是 p 的倍数,那么 很遗憾,费马小定理的逆定理是不成立的.对 a = 2,满足的非素数 n 是存 ...

  3. bzoj 2588 Spoj 10628. Count on a tree (可持久化线段树)

    Spoj 10628. Count on a tree Time Limit: 12 Sec  Memory Limit: 128 MB Submit: 7669  Solved: 1894 [Sub ...

  4. BZOJ 2780: [Spoj]8093 Sevenk Love Oimaster( 后缀数组 + 二分 + RMQ + 树状数组 )

    全部串起来做SA, 在按字典序排序的后缀中, 包含每个询问串必定是1段连续的区间, 对每个询问串s二分+RMQ求出包含s的区间. 然后就是求区间的不同的数的个数(经典问题), sort queries ...

  5. SPOJ GSS3-Can you answer these queries III-分治+线段树区间合并

    Can you answer these queries III SPOJ - GSS3 这道题和洛谷的小白逛公园一样的题目. 传送门: 洛谷 P4513 小白逛公园-区间最大子段和-分治+线段树区间 ...

  6. 【数论总结】-----励志写好一篇数论总结↖(^ω^)↗//正在施工...未完工

    近期学了学数论,来写一波总结吧. (1)排列组合,比较基础的东西了吧.//只写个概念吧,(逃: 概念:就是从n个不同元素中,任取m(m≤n)个元素并成一组,叫做从n个不同元素中取出m个元素的一个组合: ...

  7. SPOJ ATOMS - Atoms in the Lab

    题目链接:http://www.spoj.com/problems/ATOMS/ 题目大意:有N个原子,他们每秒分裂成K个新原子,新原子也能继续分裂.问如果要控制他的数量为M以内,应在什么时候使其停止 ...

  8. 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  9. 《算法竞赛中的初等数论》(五)正文 0x50筛法(ACM / OI / MO)(十五万字符数论书)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 写在最前面:本文部分内容来自网上各大博客或是各类图书,由我个人整理,增加些许见解,仅做学习交流使用,无 ...

最新文章

  1. C++多线程实现生产者消费者模式
  2. 【转】简述configure、pkg-config、pkg_config_path三者的关系
  3. Oracle EBS常用数据表
  4. 什么是网络层?网络层概述—Vecloud微云
  5. OpenCV学习笔记(四十六)——FAST特征点检测features2D OpenCV学习笔记(四十七)——VideoWriter生成视频流highgui OpenCV学习笔记(四十八)——PCA算
  6. python求函数曲率_【Python】车道线拟合曲线的曲率半径计算公式及代码
  7. 用pytorch及numpy计算成对余弦相似性矩阵,并用numpy实现kmeans聚类
  8. ubuntu系统操作常见错误
  9. 笔记本电脑销量排名_网友总结京东笔记本销量,联想高居第一,华为表现很出色...
  10. CTF常用python库PwnTools的使用学习
  11. 面向区块链的高效物化视图维护和可信查询论文学习
  12. RTMP 封包详解
  13. web文件服务器1台,WEB服务器及配件1台 - 千里马招标网
  14. 文件与Base64的互转
  15. 中国姓氏英文翻译大全
  16. 一个端到端的机器学习项目全纪录(加州房价预测)
  17. python变量相关性,数据科学:定量和定性变量之间的相关性(python语言)
  18. R语言实战——单个总体均值的区间估计
  19. POJ - 1733 带权并查集 模运算 利用map进行离散化 题目没看全导致疯狂WA
  20. 项目时间(概念、活动定义、活动排序)(笔记)

热门文章

  1. 用户收货地址h5页面_如何实现H5可视化编辑器的实时预览和真机扫码预览功能...
  2. 多个折线样式_新技能get,折线图转化成多阶梯瀑布图
  3. WIn7虚拟机下运行H3CCloud出错问题
  4. cordova指定版本_Cordova/Ionic构建android Gradle错误:支持的最小Gradle版本是2.14.1。当前版本是2.13...
  5. shell和php区别,PHP中exec函数和shell_exec函数的区别
  6. 数控铣削图案及编程_数控铣加工比普铣的优势,大多数人选择数控铣的原因
  7. python使用局部敏感性哈希算法,在海量数据中查询相似序列
  8. 推荐系统学习(一)推荐系统分类与基本流程
  9. 在pycharm中使用docker安装的python3作为运行环境
  10. carbon安装win7 thinkpad x1_联想thinkpad x1 carbon 2017笔记本使用u启动u盘安装win7系统教程...