题目传送门


  

Calculation 2

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 6114    Accepted Submission(s): 2499

Problem 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 said to be coprime to B if A, B share no common positive divisors except 1.
 
Input 
For each test case, there is a line containing a positive integer N(1 ≤ N ≤ 1000000000). A line containing a single 0 follows the last test case.
 
Output
For each test case, you should print the sum module 1000000007 in a line.
 
Sample Input

3
4
0

 
Sample Output
0
2
Author
GTmac
Source 
2010 ACM-ICPC Multi-University Training Contest(7)——Host by HIT

  分析:
  翻译下题面:给你一个正整数$N$,求小于$N$且与$N$不互质的正整数之和,对$1000000007$取模。
  容易想到,直接求肯定不好做,所以转化为求$1$到$N-1$与小于$N$且与$N$互质的正整数之和的差。
  需要用到这个定理:
  令$s$为小于$N$且与$N$互质的正整数之和,则$s=\phi(N)*N/2$。
  证明如下:
  首先明确:如果$gcd(n,x)=1,n>x$,则$gcd(n,n-x)=1$,由减法原理易证。
  那么令小于$N$且与$N$互质的正整数集合为$a[]$。那么
  $s=a[0]+a[1]+a[2]+...+a[\phi(n)]$
  可转化为
  $s=(n-a[0])+(n-a[1])+(n-a[2])+...+(n-a[\phi(n)])$
  (因为$a[]$中元素是不重复的,所以$n-a[i]$也是不重复的,且与$a[]$中的元素一一对应。)
  再将两式相加可得
  $2*s=n*\phi(n)$即$s=\phi(n)*n/2$
  那么这道题就好做了,求欧拉函数然后代公式就完事了。
  Code:
//It is made by HolseLee on 18th Jul 2019
//HDU 3501
#include<bits/stdc++.h>
#define mod 1000000007
using namespace std; typedef long long ll;
ll n,ans; inline ll get(ll x)
{
ll ret=n, y=x;
for(ll i=; i*i<=y; ++i) {
if( !(y%i) ) {
ret=ret*(i-)/i;
while( !(y%i) ) y/=i;
}
}
if( y!= ) ret=ret*(y-)/y;
return (ret*n/)%mod;
} int main()
{
while( ) {
scanf("%lld",&n);
if( !n ) break;
ans=((n-)*n/)%mod;
ans=(ans-get(n)+mod)%mod;
printf("%lld\n",ans);
}
return ;
}

HDU3501 Calculation 2 [欧拉函数]的更多相关文章

  1. hdu 3501 Calculation 2 (欧拉函数)

    题目 题意:求小于n并且 和n不互质的数的总和. 思路:求小于n并且与n互质的数的和为:n*phi[n]/2 . 若a和n互质,n-a必定也和n互质(a<n).也就是说num必定为偶数.其中互质 ...

  2. HDU 3501 Calculation 2(欧拉函数)

    Calculation 2 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submi ...

  3. HDU 3501 Calculation 2 (欧拉函数)

    题目链接 题意 : 求小于n的数中与n不互质的所有数字之和. 思路 : 欧拉函数求的是小于等于n的数中与n互质的数个数,这个题的话,先把所有的数字之和求出来,再减掉欧拉函数中所有质数之和(即为eula ...

  4. HDU3501——欧拉函数裸题

    给整数N(1 ≤ N ≤ 1000000000),求小于N的与N不互素的所有正整数的和. 思路:1.用欧拉函数求出小于N的与N互素的正整数的个数: 2.若 p 与 N 互素,则 N-p 必与 N 互素 ...

  5. 欧拉函数 || Calculation 2 || HDU 3501

    题面: 题解:欧拉函数的基础应用,再套个很 easy 的等差数列前 n 项和就成了. 啊,最近在补作业+准备月考+学数论,题就没怎么写,感觉菜得一匹>_< CSL加油加油~! 代码: #i ...

  6. 欧拉函数:HDU3501-Calculation 2

    Calculation 2 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Probl ...

  7. hdu 3501 容斥原理或欧拉函数

    Calculation 2 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  8. 杭电3501Calculation 2 欧拉函数

    Calculation 2 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  9. hdu2588 GCD (欧拉函数)

    GCD 题意:输入N,M(2<=N<=1000000000, 1<=M<=N), 设1<=X<=N,求使gcd(X,N)>=M的X的个数.  (文末有题) 知 ...

随机推荐

  1. 第8章:LeetCode--算法:二叉树的创建、遍历、删除、求高度

    创建> 需要给定一个root的key,所有小于这个key的放到左边,大于key的放到右边, 比如vector<int> tree = {5,2,7,1,9,3,8},最后的树: 5 ...

  2. python学习-2 python安装和环境变量的设置

    python的下载 1.可以去python官网下载,https://www.python.org/ 2.下载完成后,安装即可.(具体可以百度,网上都有很多安装方法) python的检测 1.打开开始- ...

  3. Python 线程&进程与协程

    Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Py ...

  4. Jersey 写restful接口时QueryParam ,FormParam 等的区别

    今天用jersey写接口,发现有一个post方法中没有得到参数,查了半天发现自己一不小心将@formparam写成了@queryparam,真是一个悲伤的故事.在这里把几个参数类型整理了一下放出来. ...

  5. python 拟合曲线并求参

    需要对数据进行函数拟合,首先画一下二维散点图,目测一下大概的分布, 所谓正态分布,就是高斯分布,正态曲线是一种特殊的高斯曲线. python的scipy.optimize包里的curve_fit函数来 ...

  6. C#UDP异步通信

    using SetingDemo.LogHelp;using SetingDemo.SingleRowDeclare;using System;using System.Collections.Gen ...

  7. 许愿墙JQ

    <!doctype html> <html> <head>     <meta charset="utf-8">     <t ...

  8. ASE19团队项目alpha阶段model组 scrum3 记录

    本次会议于11月5日,19时整在微软北京西二号楼sky garden召开,持续25分钟. 与会人员:Jiyan He, Kun Yan, Lei Chai, Linfeng Qi, Xueqing W ...

  9. Supervisor进程管理配置使用

    Supervisor进程管理 在后台应用中,有时候程序进程会异常中止退出,如果没有一个守护进程去守护这个应用进程我们就需要及时发现并重启进程.如果每一个应用进程都写一个自己的守护进程难免会比较麻烦,而 ...

  10. Windows Phone惨遭微软放弃

    微软在电脑操作系统上的用户保有量一直处于遥遥领先的地位,特别是最新的Windows 10系统,一经推出,市场表现就比较好,但相比起来,微软的手机操作系统Windows Phone就被贴上“差等生”的标 ...