链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=26&page=show_problem&problem=2421

  题意:求 n 以内的每两个数的最大公约数gcd(a, b)的和

  解题思路:假设m和n 是互质的两个数(m < n),那么gcd(m, n) = 1, 当题目中的 i, j 循环到m,n 时,g += 1,依此,当 i = k*m, j = k*n (k为整数),g += k 。

由此我们可以得出:结果 (g) 的变化是由互质的数变化引起的,所以我们的目的就是先求出 给定范围内的所有的互质的数,然后加上他们的倍数,最后求和即可。

  假设和 n 互质的数有 x 个,假设为x(k) (k <= x),那么在 i、j 循环到 x(k)、n 时结果会增加x,循环到(p*x(k), p*n) 时结果就会增加p*x。那么我们用table[i]记录各种x、n 在满足 x*n = i 时会增加多少结果,那么最后我们要输出的就是table[2] + table[3] + ... + table[N]。

  其中不得不提的是找 n 以内的与 n 互质的数(也就是求欧拉函数),然后求相应的table[x*n]。

  代码:

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath> using namespace std; typedef long long LL; const int maxv = ;
LL table[maxv]; //打表
int euler[maxv]; // 偶拉函数值 void eul()
{
int i, j;
memset(table, , sizeof(table));
for(i = ; i < maxv; ++i) euler[i] = i;
for(i = ; i < maxv; ++i)
{
if(euler[i] == i) //对每个素数的倍数求欧拉函数表
for(j = i; j < maxv; j += i)
euler[j] = euler[j] / i * (i-); //每遇到一个素数因子,就进行处理
for(j = ; j*i < maxv; j++)
table[j*i] += j * euler[i]; //j倍
}
for(i = ; i < maxv; ++i)
table[i] += table[i-]; //n的值等于本身的值加上前面的值,因为是求和
} int main()
{
int n;
eul();
while(cin >> n && n)
{
cout << table[n] << endl;
}
return ;
}

参考:http://www.cnblogs.com/staginner/category/320266.html

UVA11426的更多相关文章

  1. 【UVa11426】GCD - Extreme (II)(莫比乌斯反演)

    [UVa11426]GCD - Extreme (II)(莫比乌斯反演) 题面 Vjudge 题解 这.. 直接套路的莫比乌斯反演 我连式子都不想写了 默认推到这里把.. 然后把\(ans\)写一下 ...

  2. UVA11426 GCD - Extreme (II) (欧拉函数/莫比乌斯反演)

    UVA11426 GCD - Extreme (II) 题目描述 PDF 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例#1: 10 100 200000 0 输出样例#1: 67 13 ...

  3. UVA11426 GCD - Extreme (II) —— 欧拉函数

    题目链接:https://vjudge.net/problem/UVA-11426 题意: 求 ∑ gcd(i,j),其中 1<=i<j<=n . 题解:1. 欧拉函数的定义:满足 ...

  4. 洛谷 P2398 GCD SUM || uva11417,uva11426,uva11424,洛谷P1390,洛谷P2257,洛谷P2568

    https://www.luogu.org/problemnew/show/P2398 $原式=\sum_{k=1}^n(k\sum_{i=1}^n\sum_{j=1}^n[(i,j)=k])$ 方法 ...

  5. uva11426 gcd、欧拉函数

    题意:给出N,求所有满足i<j<=N的gcd(i,j)之和 这题去年做过一次... 设f(n)=gcd(1,n)+gcd(2,n)+......+gcd(n-1,n),那么answer=S ...

  6. UVA11426 欧拉函数

    大白书P125 #include <iostream> #include <cstring> using namespace std; #define MMX 4000010 ...

  7. uva11426 GCD Extreme(II)

    题意:求sum(gcd(i,j),1<=i<j<=n)1<n<4000001 思路: 1.建立递推关系,s(n)=s(n-1)+gcd(1,n)+gcd(2,n)+……+ ...

  8. uva11426 欧拉函数应用

    题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=121873#problem/F 题目大意:给你一个数n,让你输出(i=1-> ...

  9. uva11426(莫比乌斯反演)

    传送门:GCD Extreme (II) 题意:给定n(n<=4000000),求G G=0 for(int i=1;i<n;i++) for(int j=i+1;j<=n;j++) ...

  10. [UVa11426]最大公约数之和——极限版II

    题意:给出n,求: \[\sum_{i=1}^{n-1}\sum_{j=i+1}^{n}\gcd(i,j)\] 多组数据,\(n<=4*10^6\) sol 今天心血来潮再来写一写式子 首先这里 ...

随机推荐

  1. 简单构建基于RDF和SPARQL的KBQA(知识图谱问答系统)

    本文主要通过python实例讲解基于RDF和SPARQL的KBQA系统的构建.该项目可在python2和python3上运行通过. 注:KBQA即是我们通常所说的基于知识图谱的问答系统.这里简单构建的 ...

  2. Entity Framework 基本概念

    概念 LINQ to Entities 一种 LINQ 技术,使开发人员可以使用 LINQ 表达式和 LINQ 标准查询运算符,针对实体数据模型 (EDM) 对象上下文创建灵活的强类型化查询. ESQ ...

  3. POJ 3693 Maximum repetition substring(后缀数组)

    Description The repetition number of a string is defined as the maximum number R such that the strin ...

  4. Sublime Text 插件推荐——for web developers

    楼主向高大上的: web front-end development engineer (好吧,google就是这样翻译的 ^_^)们推荐 ST 插件,在此抛砖引玉: NO.1 :Emmet (原名: ...

  5. 如果jsp表单元素的值为空,如何避免null出现在页面上?

    可以写一个简单的函数对空值进行处理,判断值是否为空,如果是空就返回空字符串.实例代码如下: <%! String blanknull(String s) { return (s == null) ...

  6. Python中对变量是否为None的判断

    三种主要的写法有: 第一种:if X is None; 第二种:if not X: 当X为None,  False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()这 ...

  7. spring框架(2)— 面相切面编程AOP

    spring框架(2)— 面相切面编程AOP AOP(Aspect Oriented Programming),即面向切面编程. 可以说是OOP(Object Oriented Programming ...

  8. <Effective C++>读书摘要--Inheritance and Object-Oriented Design<一>

    1.Furthermore, I explain what the different features in C++ really mean — what you are really expres ...

  9. 这些JavaScript编程黑科技,装逼指南,高逼格代码,让你惊叹不已

    Javascript是一门很吊的语言,我可能学了假的JavaScript,哈哈,大家还有什么推荐的,补充送那啥邀请码. 本文秉承着:你看不懂是你SB,我写的代码就要牛逼. 1.单行写一个评级组件 &q ...

  10. git初始化之git config

    git初始化之git config     1. 下面的命令将修改/home/[username]/.gitconfig文件,也就是说下面的配置只对每一个ssh的用户可见,所以每个人都需要做.   提 ...