codeforces 111B B. Petya and Divisors(数论)
2015-08-21 09:18
309 查看
题目链接:
codeforces 111B题目大意:
给出n次查询,每次给出x和y,要求找出x的因数中没有在前y个查询的数种出现的个数。题目分析:
用一个mark[MAX]数组记录每一个数作为因子出现的最远位置。然后顺序操作每一次查询,枚举因子,判断因子之前出现的最远距离有没有出现在要求的范围内,如果没出现,更新答案。
复杂都O(n⋅n√)\mathcal{O}(n \cdot \sqrt{n} )
AC代码:
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #define MAX 100007 using namespace std; int mark[MAX],x,y,n; int main ( ) { while ( ~scanf ( "%d" , &n )) { memset ( mark , 0x9f , sizeof ( mark )); for ( int i = 0 ; i < n ; i++ ) { scanf ( "%d%d" , &x , &y ); int ans = 0; for ( int j = 1 ; j*j <= x ; j++ ) { if ( x%j ) continue; if ( mark[j] < i-y ) ans++; mark[j] = i; if ( j != x/j && mark[x/j] < i -y ) ans++; mark[x/j] = i; } printf ( "%d\n" , ans ); } } }
相关文章推荐
- 2015-8,第二期培训跟进表
- Linux压缩与解压缩命令
- 剖析Python的Tornado框架中session支持的实现代码
- Hadoop技术内幕:深入解析MapReduce架构设计与实现原理
- Android之弹出多级菜单
- DOC命令删除文件和文件夹
- java泛型总结
- 猫猫学iOS 之第一次打开Xcode_git配置,git简单学习
- 本地机apache配置基于域名的虚拟主机详解
- 九度oj-1109-连通图
- Hibernate ORM 5.0 正式发布,支持 Java 8
- 在xcode 6.4 中设置 ios应用的状态栏的风格
- 常见数据结构list template
- extern "C"解释
- __declspec(dllexport)
- POJ3468 A Simple Problem with Integers(线段树成段增减,区间求和)
- Tushare的安装
- 听故事搞懂多线程开发-- 屎壳郎老板和它的收费公厕
- Beat the Spread!
- MFC中一些窗口风格的设置以及去掉某些窗口风格的方式