hdu2841 (容斥原理递归版)
来源:互联网 发布:奢侈品软件 编辑:程序博客网 时间:2024/04/29 16:18
题意:给整数m,n;(m,n<=100000).题意可以转化为求(1-m,1-n)的组合中,有多少对数互质。
解法:先线性筛素数法筛出100000之内每个数的质因子,然后容斥求1-n中有多少个数和i互质。
dfs(int i,int tool,int rem)表示的意思是:1-tool中含有rem位置之后的i的质因子的数的个数。
代码:
/***************************************************** author:xiefubao*******************************************************/#pragma comment(linker, "/STACK:102400000,102400000")#include <iostream>#include <cstring>#include <cstdlib>#include <cstdio>#include <queue>#include <vector>#include <algorithm>#include <cmath>#include <map>#include <set>#include <stack>#include <string.h>using namespace std;#define eps 1e-8typedef long long LL;int num[100100][25];int m,n;void init(){ for(int i=2;i<=100000;i++) { if(num[i][0]==0) { num[i][1]=i; num[i][0]=1; for(int j=i*2;j<=100000;j+=i) num[j][++num[j][0]]=i; } }}long long dfs(int i,int tool,int rem){ long long res=0; for(int j=rem;j<=num[i][0];j++) res+=tool/num[i][j]-dfs(i,tool/num[i][j],j+1); return res;}int main(){ int t=0; cin>>t; init(); while(t--) { cin>>m>>n; long long ans=0; for(int i=1;i<=m;i++) ans+=n-dfs(i,n,1); cout<<ans<<endl; } return 0;}
0 0
- hdu2841 (容斥原理递归版)
- hdu2841(容斥原理)
- HDU2841 Visible Trees (容斥原理)
- HDU2841 Visible Trees【容斥原理】
- hdu2841 Visible Trees(容斥原理)
- 【容斥原理】HDU2841 Visible Trees
- hdu2841 Visible Trees(容斥原理)
- hdu2841 容斥
- HDU2841容斥原理+两种求质数对算法
- hdu2841(容斥原理+分解质因数)Visible Trees
- hdu2841 筛选素因子 容斥定理
- hdu2841 Visible Trees(容斥)
- HDU4135容斥原理递归与非递归版
- HDU2841 一个关于互质的容斥
- Visible Trees HDU2841(容斥定理的简单扩展)
- 容斥原理
- 容斥原理 POJ3904
- 【容斥原理】八
- WebDriver 与Autoit结合完成文件上传
- 多线程的那点儿事(之生产者-消费者)
- Android 传感器的使用
- 《Java程序员面试宝典》P99例题3的一个问题分析
- [Java] proxy class
- hdu2841 (容斥原理递归版)
- C 语言运行main函数之前的秘密。
- 建设保障性住房一直是海南近年来的一号民生工程
- UITextField
- Velocity语法
- 多线程的那点儿事(之死锁)
- 2014-04-10
- 创建平台独立的高质量应用程序及代码库的要点
- quartz的Cron表达式