HDU 4407 sum 容斥原理
算法:
利用数据1...N的性质,求与P的互质的个数,位运算,容斥定理。。
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<iostream> #include<vector> #include<string> #include<math.h> #include<map> #include<set> #include<algorithm> using namespace std;struct info {int s,e,p,num; }seg[1010];struct pinfo {int id, v, num; }p[1010];int factor[1000]; //保存因子 map<int,int>mp;int gcd( int n, int m ) {return m ? gcd(m, n % m ) : n; }//容斥定理求互质之和 long long cal( int x, int n) {//分解出x的因子if( x == 0 )return 0;int i,Lim = sqrt( x * 1.0 ), cnt = 0;for( i = 2; i <= Lim; i++){if( x % i == 0 ){factor[++cnt] = i;while( x % i == 0 )x = x / i; } }if( x != 1 ){factor[++cnt] = x; }int mask = 1 << cnt;long long ans = 0;for( int i = 1; i < mask; i++){ int tt = 0, fac = 1, k;for( int j = 0; j < cnt; j++){if( i & (1<<j) ){tt++;fac *= factor[j+1];} }//如果是奇数项 if( tt & 1 ){k = n / fac;ans += ( fac + 1LL * fac * k ) * k / 2;} else{k = n / fac;ans -= ( fac + 1LL * fac * k ) * k / 2; } } return ans; }int main( ) {int N, M, a, b, c, d, c1, c2, T;scanf("%d",&T);while( T-- ){ scanf("%d%d",&N,&M);c1 = c2 = 0;for( int i = 1; i <= M; i++){scanf("%d",&a);if( a == 1 ){scanf("%d%d%d",&seg[c1].s, &seg[c1].e, &seg[c1].p);seg[c1].num = i; c1++;}else{scanf("%d%d",&p[c2].id, &p[c2].v);p[c2].num = i;c2++; } } long long x, y, pans;for( int i = 0; i < c1; i++) //枚举每一个查询 {x = cal(seg[i].p, seg[i].s-1);y = cal(seg[i].p, seg[i].e);pans = ((1 + seg[i].e * 1LL) * seg[i].e * 1LL / 2 - y ) - (1 + seg[i].s - 1 ) * 1LL * (seg[i].s - 1) * 1LL / 2 + x;mp.clear();for( int j = 0; j < c2; j++){if( p[j].num < seg[i].num && seg[i].e >= p[j].id && seg[i].s <= p[j].id ){mp[p[j].id] = p[j].v; }else if( p[j].num > seg[i].num )break; }map<int,int>::iterator it;for( it = mp.begin(); it != mp.end(); it++){int xx = gcd(seg[i].p, it->second);int yy = gcd(seg[i].p, it->first);if( yy == 1 && xx != 1 )pans -= it->first;else if( yy != 1 && xx == 1 )pans += it->second; else if( yy == 1 && xx == 1 )pans += it->second - it->first; } printf("%I64d\n", pans); }}return 0; }
转载于:https://www.cnblogs.com/tangcong/archive/2012/09/22/2698434.html
HDU 4407 sum 容斥原理相关推荐
- HDU 4407 Sum(容斥原理+状态压缩)
题目链接 容斥原理不会,map不会,状态压缩不会.做毛线... 题目大意:给出1-n,n个数,有两个操作1是询问x-y区间上与p互质的数的和是多少,2是改变x位置上的数为c. 自己确实办不了,map这 ...
- hdu 4407 Sum
http://acm.hdu.edu.cn/showproblem.php?pid=4407 题意:给定初始n个数1..n,两个操作,①1 x y p 询问第x个数到第y个数中与p互质的数的和; ② ...
- HDU 4407 Sum(容斥+等差求和)
题目大意:给n个数,1-n.然后有m次操作,分别是求(x,y)中与p互质的和:将第x个数替换成c. 思路:一开始觉得区间操作往线段树上想,但是要存的东西太多,没有办法实现. 后面其实仔细一想跟前面几道 ...
- HDU.1001 Sum Problem
原题 HDU.1001 Sum Problem 分类 杂题 题意 计算从1到正整数n的累加和. 输入/输出 要求与格式 输入内容 每行输入一个正整数 输出结果 结果为累加和 输出格式 每个输出结果独占 ...
- hdu 1258 Sum It Up(回溯算法)
题意:从给定的n个正整数中选出m个数(m <= n)使得这m个数的和为给定的total 解法:回溯 /* Author: ACb0y Date: 2010-11-11 ProblemId: hd ...
- HDU 4135 Co-prime(容斥原理)
Co-prime 第一发容斥,感觉挺有意思的 →_→ [题目链接]Co-prime [题目类型]容斥 &题意: 求(a,b)区间内,与n互质的数的个数. \(a,b\leq 10^{15}\) ...
- hdu 4676 Sum Of Gcd 莫队+phi反演
Sum Of Gcd 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=4676 Description Given you a sequence of ...
- HDU 1258 Sum It Up
这题郁闷了,排序过不了,后来仔细想想不用排序, 于是果断删了,没想到删了再杭电能过,在北大不能过,真郁闷了 这题是以简单DFS,在搜到时把结果存起来,然后再暴力搜索,看是否已存在这样的sum,最后一次 ...
- HDU 4135 Co-prime 容斥原理
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4135 题目描述: 给你A, B, N, 让你求A到B之间与N互质的数的个数 解题思路: 容斥原理, ...
最新文章
- layui时间怎么设置年月日时分秒_layui-laydate时间日历控件使用方法详解
- 学完python基础知识之后可以做些什么-学完Python基础知识后,你真的会python吗?...
- A-Frame.js 学习文档翻译(一)实体
- Lodop导出图片和打印机无关,测试是否有关
- Spring AOP详解一文搞懂@Aspect、@Pointcut、@Before、@Around、@After、@AfterReturning、@AfterThrowing
- 前端学习(1746):前端调试值之时间监听
- Atitit 人工智能目前的进展与未来 包含的技术 v2 r99.docx
- Servlet+JSP分页
- securecrt 上传文件到服务器,如何在SecureCRT下使用Zmodem传输文件
- 基于神经网络的倒立摆控制系统设计
- Ubuntu安装摄像头驱动
- LaTex 在线编辑编译,生成PDF —— Overleaf
- Windows下C++调用系统软键盘及其需要注意的点
- 阿里云Ubuton开MCJava服务器_每小时不到1元,弹性计算服务按流量缴费
- 加强版Apktool堪称逆向神器
- mysql中删除数据库语句
- 理解redux-thunk
- oracle中LOB字段相关概念(自动创建LOB索引段和重建索引方法)
- 企业中的IT需求如何管理?
- 十月总结——十一月展望
热门文章
- hbase RPCServer源码分析
- sskeychain使用(轻量级框架)
- 屏蔽浏览器默认样式 user agent stylesheet
- java类加载的表现形式
- 位域 内存 字节序_JS操作内存?二进制数组了解一下
- graphs菜单_图形用户界面菜单全面解析
- python做excel表格代码_python实现跨excel的工作表sheet之间的复制方法
- ssm radis mysql_从零开始搭建框架SSM+Redis+Mysql(一)之摘要
- vue 模板_简化版的 vue 页面模板语法
- 嵌入式linux应用程序升级,基于嵌入式Linux平台的应用升级机制的研究与设计