D - Send a Table (UVA - 10820)

- 题目大意

给出一个n,求从1~n中任意两个数互质的对数为多少,(a,b)和(b,a)算两对。

- 解题思路

构造一个欧拉函数的方法,然后用一个数组去存储下标,因为(a,b)和(b,a)算两对,所以每一个都加两倍,但(1,1)很特殊,所以最后减一就行了。

- 代码

#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
const int MAX = 600000;

int phi[MAX];
void find()
{
	memset(phi, 0, sizeof(phi));
	for (int i = 1; i < MAX; i++) phi[i] = i;
	for (int i = 2; i < MAX; i++) {
		if (phi[i] == i) {
			for (int j = i; j < MAX; j += i) {
				phi[j] = phi[j] / i * (i - 1);
			}
		}
	}
}
int main()
{
	int x;
	int q = 600;
	find();
	phi[1] = 1;
	while (q--)
	{
		cin >> x;
		long long sum = 0;
		if (x == 0)
			break;
        for (long long i = 1; i <= x; i++)
				{
					sum += phi[i];
				}
	cout << 2*sum-1 << endl;
	}
return 0;
}

  

原文地址:https://www.cnblogs.com/alpacadh/p/8448350.html

时间: 2024-08-02 23:42:51

D - Send a Table (UVA - 10820)的相关文章

SQL Server -&gt;&gt; 深入探讨SQL Server 2016新特性之 --- Temporal Table(历史表)

原文:SQL Server ->> 深入探讨SQL Server 2016新特性之 --- Temporal Table(历史表) 作为SQL Server 2016(CTP3.x)的另一个新特性,Temporal Table(历史表)记录了表历史上任何时间点所有的数据改动.Temporal Table其实早在ANSI SQL 2011就提出了,而SAP HANA, DB2和Oracle早已在它们的产品中加入/实现了这一特性.所以说微软其实是落后了几个竞争对手.既然在CTP3.0中加入了,相信

并查集(UVA 1106)

POINT: 把每个元素看成顶点,则一个简单化合物就是一条无向边,若存在环(即k对组合中有k种元素),则危险,不应该装箱,反之,装箱: 用一个并查集维护连通分量集合,每次得到一种化合物(x, y)时检查x, y是否在同一集合中,如果是,拒绝,反之接受. 并查集 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题.常常在使用中以森林来表示. 集就是让每个元素构成一个单元素的集合,也就是按一定顺序将属于同一组的元素所在的集合合并. -----------

逆向+两次bfs(UVA 1599)

为什么都说简单好想咧.坦白从宽看了人家的代码,涨了好多姿势,, http://blog.csdn.net/u013382399/article/details/38227917 被一个细节坑了.. 2147483647是0x7fffffff啊啊啊,7个f!!! 1 #include <iostream> 2 #include <sstream> 3 #include <cstdio> 4 #include <cstring> 5 #include <c

Carmichael Numbers(Uva 10006)

  Carmichael Numbers An important topic nowadays in computer science is cryptography. Some people even think that cryptography is the only important field in computer science, and that life would not matter at all without cryptography. Alvaro is one

Symbol Table(符号表)

一.定义 符号表是一种存储键值对的数据结构并且支持两种操作:将新的键值对插入符号表中(insert):根据给定的键值查找对应的值(search). 二.API 1.无序符号表 几个设计决策: A.泛型 在设计方法时没有指定处理对象,而是使用了泛型. 并且将键(Key)和值(Value)区分开来. B.重复键的处理 规则: 每个值(Value)都只对应一个键(Key)(即不允许存在重复的键). 当用例代码向表中存入的键值对和表中的已有的键(以及关联的值)冲突时,新的值替代旧的值. C.Null 键

Ace admin --table(单表)

一.第一步导入依赖js 二.copy demo 如下 <%@ page contentType="text/html; charset=UTF-8" session="false" language="java" %><%@ include file="/common/indexJs.jsp" %> <%@page import="platform.Constants"%>

SPOJ - PGCD Primes in GCD Table(莫比乌斯反演)

http://www.spoj.com/problems/PGCD/en/ 题意: 给出a,b区间,求该区间内满足gcd(x,y)=质数的个数. 思路: 设f(n)为 gcd(x,y)=p的个数,那么F(n)为 p | gcd(x,y)的个数,显然可得F(n)=(x/p)*(y/p). 这道题目因为可以是不同的质数,所以需要枚举质数, 但是这样枚举太耗时,所以在这里令t=pk, 这样一来的话,我们只需要预处理u(t/p)的前缀和,之后像之前的题一样分块处理就可以了. 1 #include<ios

Codeforces 662C Binary Table(快速沃尔什变换)

Problem 给定一个n(≤20)*m(≤100 000)的01矩阵,每次操作可以将一行或一列取反. 求最终1的最少个数. Solution 前置技能:快速沃尔什变换(FWT). 观察到n较小,考虑\(O(2^n)\)枚举每一行选或不选. 不妨设f(x)表示行的操作状态为x时(我们可用一个二进制数表示状态),经过各种列操作后所得到的最少的1的个数. 可以\(O(m)\)再扫一遍所有列.但显然T飞了. 定义\(C_j\)表示有多少列的状态为j:\(E_k\)表示对于某一列而言,若它经过各种行操作

Codeforces Round #256 (Div. 2) D. Multiplication Table(二分查找)

转载请注明出处:http://blog.csdn.net/u012860063?viewmode=contents 题目链接:http://codeforces.com/contest/448/problem/D -----------------------------------------------------------------------------------------------------------------------------------------------