【求和】题解
来源:互联网 发布:ios10 越狱 mac 编辑:程序博客网 时间:2024/06/01 09:14
题目
题目描述
若两个数的最大公约数为1,则这两个数互质。现在给出一个正整数N(1<=2^31-1),你的任务是求出1~N中与N互质的数的总和。
输入
一个整数N
输出
一个整数sum,表示1~N中与N互质的数的总和。
样例输入
10
样例输出
20
分析
解法一
套公式:ans=N*phi(N)/2
#include <cmath>#include <cstdio>#include <cstdlib>#include <iostream>#include <algorithm>#include <cstring>using namespace std;long long zs[1000],m,ans,m2[20];long long s;int main(){ long long k,p,l,n,tot; scanf("%lld",&n); int i,j; ans=(1+n)*n/2; tot=0; int nn=n; for(i=2;i<=int(sqrt(n))+1;i++) { if(n%i==0) { zs[++tot]=i; while(n%i==0) { n/=i; } } } //以上是求质因数 if(n>1) { zs[++tot]=n; } s=nn; for(i=1;i<=tot;i++) { s=(zs[i]-1)*s/zs[i]; } s=s*nn/2; printf("%lld",s);}
解法二
假设S为1~N的总和,P为与N互质的数的总和(即答案),Q为不与N互质的数的总和,则P=S-Q;
显然S=(1+N)*N/2,我们就可以通过求出Q来的得出P。
首先求出N所有的质因数,再根据容斥原理就可以很轻松的求出Q。
再因为:
2*3*5*7*11*13*17*19*23=223092870<maxN2*3*5*7*11*13*17*19*23*29=6469693230>maxN
所以N质因数的个数不会超过9个,即容斥原理不会超时。
1 0
- 【求和】题解
- 【JZOJ5153】树形图求和 题解
- 级数求和ACC程序加题解PASCAL
- 51NOD 序列求和 V5题解
- 【题解搬运】PAT_L1-009 N个数求和
- 浙江大学PAT上机题解析之2-06. 数列求和
- 求和
- 求和。
- 求和
- 求和
- 求和
- 求和
- 求和
- 求和
- 求和
- 求和
- 求和
- 求和
- FACEBOOK MARKETING API CHANGELOG
- Android 搭建NDK环境 新
- noip2000乘积最大c++
- Android运营商名称显示(原)
- 【spark】创建一个基于maven的spark项目所需要的pom.xml文件模板
- 【求和】题解
- 单链表逆置-java(递归与非递归)
- VS2010 + OpenCV2.3.1打开多个摄像头
- Linux 线程同步的三种方法
- MySql语句集合类
- 【spark】spark常用命令列表
- Centos6.5:Docker下部署Ceph
- 解决Chrome不支持本地Ajax请求的问题
- UiAutomator步骤