Redraiment猜想2 (容斥)
来源:互联网 发布:人工智能的利弊800字 编辑:程序博客网 时间:2024/06/04 01:08
http://icpc.ahu.edu.cn/OJ/Problem.aspx?id=557
我还不知道容斥原理是什么(别人博客是这么说的),感觉很厉害.
开始发这博客的时候只是似懂非懂,现在补充一下我的理解。
1、为什么要素数表达到10005因为,在10^8内的所有合数必然至少有一个约数在10005以内。
2、素数表。
3、dfs中的容斥,多减少补。
#include <cstdio>#include <cstring>#include <cstdlib>#include <string>#include <map>#include <cmath>#include <iostream>#include <stdexcept>#include <cstddef>#include <algorithm>#include <vector>#include <numeric>#include <cctype>#define LL long long#define Endl endl#define INF 0x7fffffff//#define WJusing namespace std;const int maxn=10005;int n,sqrn,cnt;bool vis[maxn];int p[1300];void prime(){int k=0;for(int i=2;i<maxn;i++){if(!vis[i]) p[k++]=i;for(int j=0;j<k&&p[j]*i<maxn;j++){vis[p[j]*i]=1;if(i%p[j]==0) break;}}}void dfs(int num,int pro,int index){for(int i=index;p[i]<=sqrn;i++){if(1LL*pro*p[i]>n) return;dfs(num+1,pro*p[i],i+1);if(num&1) cnt-=n/(pro*p[i]);else cnt+=n/(pro*p[i]);if(num==1) cnt++;}}int main(int argc, char *argv[]){#ifdef WJ//freopen("in.txt","r",stdin);freopen("out.txt","w",stdout);#endifmemset(vis,0,sizeof(vis));prime();while(scanf("%d",&n),n){cnt=n;sqrn=int(sqrt((double)n)+0.5);dfs(1,1,0);printf("%d\n",cnt-1);}return 0;}
0 0
- Redraiment猜想2 (容斥)
- 【容斥原理】AOJ-557 Redraiment猜想2
- Redraiment猜想
- AOJ7 Redraiment猜想
- Ytu 1007: Redraiment猜想
- YTU 1007: Redraiment猜想
- AOJ 7.Redraiment猜想
- aoj 7 Redraiment猜想
- OJ-1007 Redraiment猜想
- Redraiment猜想+素数求和
- AOJ-AHU-OJ-7 Redraiment猜想(优化)
- AOJ-AHU-OJ-7 Redraiment猜想
- TOJ 1006 Redraiment猜想 (求素数)
- nefu 2 猜想 (哥德巴赫猜想)
- 华为OJ(Redraiment的走法)
- count_prime(容斥)
- 1717(容斥)
- 猜想2
- JS中的Ajax操作实例,get方式和post方式对比
- LLVM (6) 11.5 一个目标可重定向的LLVM代码生成器
- Lowest Common Multiple Plus(杭电2028)
- 就从第一个简单的JAVA出发
- 各类硬盘接口总结
- Redraiment猜想2 (容斥)
- android实现圆形ImageView
- 链表创建
- ECC纠错算法
- 编程语言基础知识
- UVA 10427 Naughty Sleepy Boys
- WordPress修改文章列表显示摘要
- LeetCode OJ - Word Ladder II
- hdu 3033 I love sneakers!(分组背包)