Calculation 2 HDU - 3501

https://vjudge.net/problem/HDU-3501

不会做啊。。。记一下做法

做法是计算小于n且与n互质的数的和;根据如果gcd(i,n)==1,那么gcd(n-i,n)==1,对这些数两两一组分组,使得每组的和为n

原文地址:https://www.cnblogs.com/hehe54321/p/9320485.html

时间: 2024-10-18 05:03:19

Calculation 2 HDU - 3501的相关文章

C - Calculation 2 HDU - 3501 (欧拉)

Given a positive integer N, your task is to calculate the sum of the positive integers less than N which are not coprime to N. A is said to be coprime to B if A, B share no common positive divisors except 1. InputFor each test case, there is a line c

hdu 3501 Calculation 2 (欧拉函数)

题目 题意:求小于n并且 和n不互质的数的总和. 思路:求小于n并且与n互质的数的和为:n*phi[n]/2 . 若a和n互质,n-a必定也和n互质(a<n).也就是说num必定为偶数.其中互质的数成对存在.其和为n. 公式证明: 反证法:如果存在K!=1使gcd(n,n-i)=k,那么(n-i)%k==0而n%k=0那么必须保证i%k=0k是n的因子,如果i%k=0那么gcd(n,i)=k,矛盾出现; 所以先求出1--n-1 的和, 再用这个和 减去 上面公式求出来的值. 欧拉函数phi(m)

HDU 3501 Calculation 2(欧拉函数的应用)

HDU 3501 Calculation 2 大意:求1~n之间与n不互质的数的总和. 思路:欧拉函数的应用:先用欧拉函数求出与n互质的总数m,计算m个数的总和,用n的总和减去m的总和就是想要的结果. 1 #include <stdio.h> 2 #define LL __int64 3 4 int eular(int n){ 5 int ret = 1; 6 for(int i = 2; i*i <= n;i++) 7 if(n%i == 0){ 8 n /= i, ret *= i-

HDU 3501 Calculation 2 (欧拉函数应用)

Calculation 2 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2989    Accepted Submission(s): 1234 Problem Description Given a positive integer N, your task is to calculate the sum of the posit

HDU 3501 Calculation 2

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3501 解题思路: 小于n与n互质的数的和为Eular(n)×n/2 实现代码: #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int MOD=1000000007 ; /* 小于n与n互质的数的和为Eu

HDU 3501 Calculation 2 (欧拉函数)

题目链接 题意 : 求小于n的数中与n不互质的所有数字之和. 思路 : 欧拉函数求的是小于等于n的数中与n互质的数个数,这个题的话,先把所有的数字之和求出来,再减掉欧拉函数中所有质数之和(即为eular(n)*n/2),得到的就是最终结果,所以也是模板题一道. 1 //3501 2 #include <iostream> 3 #include <stdio.h> 4 #include <stdlib.h> 5 #include <string.h> 6 #i

HDU 3501 Calculation 2(欧拉函数)

Calculation 2 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Description Given a positive integer N, your task is to calculate the sum of the positive integers less than N which are not coprime to N. A is s

HDU——3501 Calculation 2

题意: 给定正整数n,求所有小于n的且与n为非互质数的和. 输入 对于每一个测试用例,都有一个包含正整数n(1≤n≤1000000000)的行.包含单个0的行将遵循最后一个测试用例. 输出 对于每个测试用例,您应该在一行中打印求和模1000000007. 思路: 考虑互质的数的一个性质,n与m互质,那么m-n与m也一定互质. 好,我们再来考虑这个题. 让求与n为非互质数的数的和,那么我们是不是就可以先把所有数的和求出来然后再减去与n互质的数的和???!! 好,我们就这样干. 有人又要问了,为什么

【数论-欧拉函数】HDU 3501 Calculation 2 ( 与n不互质的数的和 )

[题目链接]click here~ [题目大意]给定整数n,求与n不互质的数的和,最后mod1e9+7 [解题思路]我们利用欧拉函数和欧几里德定理,if  gcd(n,i)==1 ,则有 gcd(n,n-i)==1 ,可以知道 其中一个若为i则存在一个为n-i 那么二者之和为n  ,这样的一共有eular(n)/2对  故与n互质的所有数的和为 n*eular(n)/2 那么与n不互质的 数就是(n)*(n-1)/2-n*eular(n)/2 [source]2010 ACM-ICPC Mult