链接: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. kubernetes相关

    1.获取client , api-server 加token 或in-cluster方式 2.所有对象均有list update get 等方法 3.对象属性源码追踪,yaml与源码一一对应 4.一些 ...

  2. react和vue的区别

    1.数据改变的方式 react是通过setState来改变数据,然后重走组件的渲染过程.而vue是通过Object.defineProperty和watcher来显示响应式的数据,所以数据的改变是直接 ...

  3. centos+nginx+redmine+gitosis安装指南

    说明 这篇文章我现在的主要目的是记录自己安装redmine和gitosis的过程,可能写的有些糙,请各位读者见谅.我会在后面的时间里逐渐完善细节.但我想,这已经是网上迄今为止国内最详细的nginx+r ...

  4. Python字符串格式化表达式和格式化方法

    Python格式化字符串由两种方式可以选择:一种是格式化表达式(Formatting Expression),一种是格式化方法(Formatting Method).其中格式化表达式在全Python版 ...

  5. 异常概念和处理机制,try-catch-finally,throw和throws,自定义异常

    异常概念和处理机制 什么是异常? 所谓异常就是指在程序运行的过程中发生的一些不正常事件.(如除0溢出,数组下标越界,所要读取的文件不存在); 异常导致的后果? Java程序的执行过程中如出现异常事件, ...

  6. 福州大学软工1816 | K班 第一次作业

    (一)回想一下你初入大学时对计算机专业的畅想 (1)当初你是如何做出选择计算机专业的决定的? 本身对于计算机感兴趣.高考完之后翻了书,对于物理数学等基础学科兴趣不大,对金融等商科几乎毫无了解,再加上当 ...

  7. LintCode-54.转换字符串到整数

    转换字符串到整数 实现atoi这个函数,将一个字符串转换为整数.如果没有合法的整数,返回0.如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN( ...

  8. Spring IOC原理简析

    所谓IoC, 就是一个用XML来定义生成对象的模式. 1.现有三个类,Human是接口,Chinese是一个实现类,American是另一个实现类. 2.获取以上对象采用工厂模式的用法如下: 创建一个 ...

  9. java.awt.AWTError: Can't connect to X11 window server using ':20' as the value of the DISPLAY variable

    1.使用pio在Linux服务器上创建window文件时,需要使用到Linux的图形界面服务,出现以下问题需确认用户权限. 参考文献:https://zhidao.baidu.com/question ...

  10. 第30天:DOM对象操作

    JS包括三部分:ECMAscript.DOM(文档对象).BOM(浏览器对象) 一.DOM(文档对象)DOM树节点(元素.属性.标签.标记等都是节点) 二.访问节点 documment.getElem ...