例题10-7 交表 UVa10820

1.题目描述:点击打开链接

2.解题思路:本题实质上是要求满足1≤x,y≤n,且x,y互素的个数。除了(1,1)外,其余的x,y各不相同。设x<y有f(n)个,那么最终答案是2*f(n)+1。关于f(n)的计算就是不超过n的所有数的欧拉函数的和。而求解1~n中所有数的欧拉函数的时间复杂度是O(N*loglogN)。

3.代码:

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<algorithm>
#include<string>
#include<sstream>
#include<set>
#include<vector>
#include<stack>
#include<map>
#include<queue>
#include<deque>
#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<ctime>
#include<functional>
using namespace std;

#define N 50000+10
int phi[N];

void phi_table(int n, int*phi)
{
	memset(phi, 0, sizeof(phi));
	phi[1] = 1;
	for (int i = 2; i <= n;i++)
	if (!phi[i])
	for (int j = i; j <= n; j += i)
	{
		if (!phi[j])phi[j] = j;
		phi[j] = phi[j] / i*(i - 1);
	}
}

int main()
{
	//freopen("test.txt", "r", stdin);
	phi_table(N,phi);//事先求出所有数的phi值
	int n;
	while (scanf("%d",&n)!=EOF&&n)
	{
		int ans = 0;
		for (int i = 2; i <= n; i++)
			ans += phi[i];
		ans = ans * 2 + 1;
		printf("%d\n", ans);
	}
	return 0;
}
时间: 2024-10-14 04:13:42

例题10-7 交表 UVa10820的相关文章

17115 ooxx numbers 交表

17115 ooxx numbers 时间限制:1000MS  内存限制:65535K提交次数:0 通过次数:0 题型: 编程题   语言: G++;GCC Description a number A called oo number of a number B if the sum of all As factor is the number B. (A,B) is a pair of ooxx numbers if A is the oo number of B and B is the

10.11 Linux网络相关 10.12 firewalld和netfilter 10.13 netfilter5表5链介绍 10.14 iptables语法

10.11 Linux网络相关 10.12 firewalld和netfilter 10.13 netfilter5表5链介绍 10.14 iptables语法 扩展(selinux了解即可) selinux教程 http://os.51cto.com/art/201209/355490.htm selinux pdf电子书 http://pan.baidu.com/s/1jGGdExK 10.11 linux网络相关 -ifconfig 命令在centos7 是没有的,需要安装yum inst

寻找自适应元素(10)-透视表的自动拆分数据

寻找自适应元素(10)-透视表的自动拆分数据 设计要点:excle.界面.自动调整.数据透视表 阿金:不管怎么说,俺一下子说了这么多透视表的自动功能,在这场PK中应该算俺赢. 秀秀:不一定,因为俺还有好多自适应元素没说呢,透视表就是这么几下子吧? 阿金:那俺再说一个!透视表不仅能组合,还能自动拆分. 秀秀:自动拆分? 阿金:当然!俺记得给你说过"按部门拆分为多个工作表"的方法么? 秀秀:噢,就是把"部门"字段设置为"数据透视表"的页字段.然后,单

【峰回路转】Excel技巧百例 10.数据透视表的简单使用-分类汇总

在excel如何实现类似SQL SERVER中的group by的功能呢?在excel中可以使用透视表来完成这个工作. 原始数据: 假设这是某学校的学生成绩表(当然数据为很多,我们用少量数据演示这个功能) 如何快速得到每个学生的总分呢? 1.选中数据区域 2.点击上面的插入tab中的"数据透视表" 3.在弹出的窗口,点击确定 4.在新出现的窗口右侧将姓名放到行中,将分数拖拽到列中 5. 我们可以快速得到我们想要的结果,我们也可以把结果复制,然后选择性粘贴为数值,便于自己进行其他调整.

4.10 用其他表中的值更新

问题: 要用一个表中的值来更新另外一个表中的行.例如,在表new_sal中保存着某个特定员工的新工资. 在表new_sal中,deptno为关键字.要用表new_sal中的值更新表emp中相应员工的工资,条件是emp.deptno与new_sal.deptno相等,将匹配记录的emp.sal更新为new_sal.sal,将emp.comm更新为new_sal.sal的50%. 解决方案:在表new_sal和emp之间做链接,用来查找comm新值并带给update语句.像这样通过关联子查询进行更新

第六章部分例题 双向bfs邻接表和邻接矩阵实现

Idealpath 双向bfs输出颜色,邻接矩阵实现 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <queue> 5 #include <map> 6 #include <algorithm> 7 8 using namespace std; 9 10 const int maxn=10000; 11 const int inf=1

MySQL基础入门学习【10】多表删除

DELETE tbl_name [.*] [, tbl_name[.*]]... FROM table_references [WHERE where_condition] 现在想把重复的记录删除掉,保留id号比较小的记录. 一张表模拟多表删除来实现: (1) 查找重复记录 (2) 参照这张表来删除上面那个表中的数据 [涉及 子查询.连接.多表更新.多表删除 : 多表操作时实现了自身的连接:通过自身的连接删除重复的记录] 原文地址:https://www.cnblogs.com/jade-91/

交表单数据到你的网站,给安全造成了问题

<?php class Crumb { const SALT = 'http:test.com'; static $ttl = 7200; static public function issueCrumb($uid, $ttl=7200, $action= -1) { if(intval($ttl)>7200) self::$ttl = $ttl; $i = ceil(time() / self::$ttl); return substr(self::challenge($i . $acti

10.12Django form表单

2018-10-12 15:24:23 From表单参考连接: https://www.cnblogs.com/yuanchenqi/articles/7614921.html 新增了ModelForm的使用,比Form 更省事更简洁! 越努力越幸运!还有30多天完成把luffycity项目完后面还有其他的flask.爬虫什么的,然后就学完啦! 明天周末,把博客再整理一下!!!!! 把自己的博客项目再优化一下!!!233333333! 越努力,越幸运!永远不要高估自己! views.py fro