题目传送门


  

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. Redis 和 Memcached 各有什么优缺点,主要的应用场景是什么样的?

    1.显示最新的项目列表 2.删除与过滤 3.排行榜相关 4.按照用户投票和时间排序 5.处理过期项目 6.计数 7.特定时间内的特定项目 8.实时分析正在发生的情况,用于数据统计与防止垃圾邮件等 9. ...

  2. fiddler笔记:web session窗口介绍

    1.web session列表的含义:(从左到右) # fiddler通过session生成的ID. Result 响应状态码. Host 接收请求的服务器的主机名和端口号. URL 请求资源的位置. ...

  3. 常用javascript内置对象——String对象

    创建 String 对象的语法: 1:new String(s); :2:String(s); :3:直接赋值 String中属性 String中方法 <script> window.on ...

  4. Git忽略已追踪文件或文件夹

    今天拉取代码,用vs生成后发现obj文件夹下自动生成的文件被同事提交了,这个本应该加入到ignore的 我就需要把这个文件夹加入到gitignore, 不过已经追踪的文件和文件夹,直接添加到gitig ...

  5. Javascript简单教程汇总

    什么是函数 一段定义好的代码,并可以反复使用的代码块 函数的作用 提升代码的可复用性,将一段代码进行预定义,需要使用的时候才触发 代码块 形成了一个相对独立的作用域 语法: function  函数名 ...

  6. PropertiesUtils(普遍做法)

    public class PropertiesUtil{ private static Properties properties; static{ InputStream in = null; tr ...

  7. ASR测试方法---字错率(WER)、句错率(SER)统计

    一.基础概念 1.1.语音识别(ASR) 语音识别(speech recognition)技术,也被称为自动语音识别(英语:Automatic Speech Recognition, ASR), 狭隘 ...

  8. JPA的API介绍、工具类抽取

    1.Persistence对象 Persistence对象主要作用是用于获取EntityManagerFactory对象的 .通过调用该类的createEntityManagerFactory静态方法 ...

  9. axios 简单二次封装

    import axios from 'axios' import { Message } from 'element-ui'; // 设置baseURL //axios.defaults.baseUR ...

  10. 【转】char data[0]用法总结

    @2019-07-31 struct MyData { int nLen; ]; }; 开始没有理解红色部分的内容,上网搜索下,发现用处很大,记录下来. 在结构中,data是一个数组名:但该数组没有元 ...