hoj 1867 经理的烦恼 (树状数组)
2017-08-11 14:58
429 查看
#include <stdio.h> #include <string.h> const int MAXN = 1e6+10; int num[MAXN]; int cnt[MAXN]; int C,N,M; bool isPrime(int num) { if(num <= 1) return false; for(int i = 2; i*i <= num; ++i) if(num%i == 0) return false; return true; } int lowBit(int x) { return x&-x; } int sum(int i) { int s = 0; while(i > 0) { s += cnt[i]; i -= lowBit(i); } return s; } void add(int i, int x) { while(i <= C) { cnt[i] += x; i += lowBit(i); } } int main() { int cmd,a,b,flag; int time = 0; while(scanf("%d %d %d",&C,&N,&M) &&(C+N+M)) { memset(cnt,0,sizeof(cnt)); printf("CASE #%d:\n",++time); if(isPrime(M)) flag = 1; else flag = 0; for(int i = 1; i <= C; ++i) { num[i] = M; add(i,flag); } while(N--) { scanf("%d %d %d",&cmd,&a,&b); if(cmd == 0) { if(isPrime(num[a])) { num[a] += b; if(!isPrime(num[a])) add(a,-1); } else { num[a] += b; if(isPrime(num[a])) add(a,1); } } else { printf("%d\n",sum(b)-sum(a-1)); } } printf("\n"); } return 0; }
相关文章推荐
- HOJ 1867 经理的烦恼 【 树状数组 】
- hoj 1867 经理的烦恼
- 【HOJ 1867】经理的烦恼(树状数组)
- hoj 1867 哈尔滨工业大学 oj 经理的烦恼 简单的树状数组
- HOJ 1867 经理的烦恼
- hoj 1867 经理的烦恼 树状数组
- HOJ1867——经理的烦恼
- hoj 1867 经理的烦恼
- 树状数组 经理的烦恼
- HOJ 1867 经理的烦恼 树状数组
- hoj 1867_经理的烦恼_树状数组
- HOJ 1867 经理的烦恼 一维树状数组
- Hoj(哈尔滨工业大学) 1867 经理的烦恼
- 树状数组专题(二)hoj1867经理的烦恼
- Hoj 1867 经理的烦恼(树状数组)
- HOJ——T 1867 经理的烦恼
- HIT 1867 经理的烦恼(树状数组)
- hoj 经理的烦恼
- -----hoj 2275 Number sequence(树状数组)
- HIT 1867 经理的烦恼(树状数组)