LightOJ 1375 - LCM Extreme 莫比乌斯反演或欧拉扩展
**题意:**给出n [1,3*1e6] 求
并模2^64。
**思路:**先手写出算式
观察发现可以化成
那么关键在于如何求得i为1~n的lcm(i,n)之和。可以知道lcm(a,b)为ab/gcd(a,b)
变换得(a/gcd) * (b/gcd)gcd 由于GCD的性质,可以知道a/gcd 与 b/gcd是互质的两个质数。由此可以想到应用欧拉函数,并且由性质能够证明 n*phi(n)/2为小于n所有与n互质数之和(证明:已知一个质数p那么显然n-p与它互质,那么phi(n)中有phi(n)/2对数,每对数和为n)
故
设n/gcd(I,n)为d则
由此题目化成枚举d即可。还需注意格式的控制转换,本题需要模2^64 只需设unsigned long long 溢出即模,内存限制是刚好卡住的。
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <algorithm>
#include <utility>
#include <vector>
#include <map>
#include <set>
#include <string>
#include <stack>
#include <queue>
#define LL unsigned long long
#define MMF(x) memset((x),0,sizeof(x))
#define MMI(x) memset((x), INF, sizeof(x))
using namespace std;
const int INF = 0x3f3f3f3f;
const int N = 1e6+10;
int eul[3*N];
LL fa[3*N];
LL ans[3*N];
void eular()
{
MMF(eul);
MMF(fa);
eul[1] = 1;
for(int i = 2; i < 3*N; i++)
{
if(!eul[i])
{
for(int j = i; j < 3*N; j+=i)
{
if(!eul[j])
eul[j] = j;
eul[j] = eul[j]/i * (i-1);
}
}
}
ans[0] = ans[1] = 0;
for(LL i = 2; i < 3*N; i++)
{
for(LL j = i; j < 3*N; j += i)
{
LL t = j * eul[i] / 2;
fa[j] += i* t;
}
ans[i] = ans[i-1] + fa[i];
}
}
int main()
{
eular();
int T;
int cnt = 0;
scanf("%d", &T);
while(T--)
{
LL n;
scanf("%llu", &n);
printf("Case %d: %llu\n", ++cnt, ans[n]);
//printf("%d\n",eul[3000000]);
}
return 0;
}
/*
5
2
10
13
100000
3000000
**/
LightOJ 1375 - LCM Extreme 莫比乌斯反演或欧拉扩展的更多相关文章
- BZOJ 2818 Gcd (莫比乌斯反演 或 欧拉函数)
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MB Submit: 2534 Solved: 1129 [Submit][Status][Discu ...
- 【BZOJ2226】[Spoj 5971] LCMSum 莫比乌斯反演(欧拉函数?)
[BZOJ2226][Spoj 5971] LCMSum Description Given n, calculate the sum LCM(1,n) + LCM(2,n) + .. + LCM(n ...
- UVa 10214 (莫比乌斯反演 or 欧拉函数) Trees in a Wood.
题意: 这道题和POJ 3090很相似,求|x|≤a,|y|≤b 中站在原点可见的整点的个数K,所有的整点个数为N(除去原点),求K/N 分析: 坐标轴上有四个可见的点,因为每个象限可见的点数都是一样 ...
- 【BZOJ2818】Gcd(莫比乌斯反演,欧拉函数)
题意:给定整数N,求1<=x,y<=N且Gcd(x,y)为素数的数对(x,y)有多少对 1<=N<=10^7 思路:莫比乌斯反演,同BZOJ2820…… ; ..max]of ...
- JZYZOJ 1375 双亲数 莫比乌斯反演
http://172.20.6.3/Problem_Show.asp?id=1375 网上搜推理图. 有一段没有写莫比乌斯反演都快忘了..数学能力--,定理完全不会推,但是这道题整体来说应该是比较好写 ...
- 洛谷 - SP3871 GCDEX - GCD Extreme - 莫比乌斯反演
易得 $\sum\limits_{g=1}^{n} g \sum\limits_{k=1}^{n} \mu(k) \lfloor\frac{n}{gk}\rfloor \lfloor\frac{n}{ ...
- BZOJ2694 Lcm 【莫比乌斯反演】
BZOJ2694 Lcm Description Input 一个正整数T表示数据组数 接下来T行 每行两个正整数 表示N.M Output T行 每行一个整数 表示第i组数据的结果 Sample I ...
- [NOI2010]能量采集 BZOJ2005 数学(反演)&&欧拉函数,分块除法
题目描述 栋栋有一块长方形的地,他在地上种了一种能量植物,这种植物可以采集太阳光的能量.在这些植物采集能量后,栋栋再使用一个能量汇集机器把这些植物采集到的能量汇集到一起. 栋栋的植物种得非常整齐,一共 ...
- GCD - Extreme (II) UVA - 11426 欧拉函数_数学推导
Code: #include<cstdio> using namespace std; const int maxn=4000005; const int R=4000002; const ...
随机推荐
- Python3 循环表达式
一 While循环 基本循环 while 条件: 执行内容 #循环体 ... #循环体 ... #循环体 # 若条件为真,执行循环体内容 # 若条件为假,不执行循环体内容 实例1(Python 3.0 ...
- 将footer固定在页面最下方
方法一: HTML结构: <div id="id_wrapper"> <div id="id_header"> Header Block ...
- Simple Expression
Description You probably know that Alex is a very serious mathematician and he likes to solve seriou ...
- Java版office文档在线预览
java将office文档pdf文档转换成swf文件在线预览 第一步,安装openoffice.org openoffice.org是一套sun的开源office办公套件,能在widows,linux ...
- UML建模语言入门-视图,事物,关系,通用机制
. 作者 :万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/18964835 . 一. UML视图 1. Ration ...
- Internet Secure
key Secret key(密钥):ues the same key to Encryption and decryption(symmetric-key)对称加密,需要绝对安全的空间来传递key ...
- Java中I/O流之处理流类型
节点流:一个管道直接连接到数据源上面: 处理流:套在别的管道上面的管道: 处理流类型: [注]:在字符流中的OuPutStreamReader写错了,应该是:OutputStreamWriter
- python学习笔记03:python的核心数据类型
从根本上讲,Python是一种面向对象的语言.它的类模块支持多态,操作符重载和多重继承等高级概念,并且以Python特有的简洁的语法和类型,OOP十分易于使用.Python的语法简单,容易上手. Py ...
- mac mysql连接报错ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
找了半天 又是kill进程,又是改设置文件,又是重启电脑,都不管用 翻到stackoverflow上的解决方案,实施成功: 原文链接:https://stackoverflow.com/questio ...
- Atom IDE开发工具, ASCII艺术评论, ninimap 插件
1 ASCII Art Comments One neat trick is to use ASCII art to create huge comments visible in the minim ...