hdu 2841 Visible Trees
来源:互联网 发布:电脑没网络手机能连上 编辑:程序博客网 时间:2024/06/01 18:20
点这里
素数打表
素因子分解
容斥定理
固定m 在1-n中找与m互质的数
#include <iostream>#include <string.h>#include <stdio.h>#include <math.h>using namespace std;const int maxn=1e6+5;int prime[maxn];int vis[maxn],cnt,p;typedef long long ll;ll gcd(ll n, ll m){ if(m==0) return n; else return gcd(m,n%m);}void init(){ cnt = 0; memset(vis,0,sizeof(vis)); for(int i=2; i<maxn; i++) { if(!vis[i]) { prime[cnt++]=i; for(int j=i+i; j<maxn; j+=i) vis[j]=1; } }}int yz[maxn];void syzfj(ll n){ p=0;ll x=n; for(int i=0; i<cnt&&prime[i]*prime[i]<=n; i++) { ll tmp=0; if(n%prime[i]==0) { yz[p]=prime[i]; while(x%prime[i]==0) { tmp++; x/=prime[i]; } p++; } } if(x>1) { yz[p]=x; p++; }}ll ttt(int tt,int i){ syzfj(i);ll ans=0; for(int i=1; i<(1<<p); i++) { ll cj=1;int c=0; for(int j=0; j<p; j++) { if(i&(1<<j)) { c++; cj*=yz[j]; } } if(c%2==0) ans-=tt/cj; else ans+=tt/cj; } return tt-ans;}int main(){ int n,t,m; cin>>t; init(); while(t--) { cin>>n>>m; ll ans=0; for(int i=1;i<=n;i++) ans+=ttt(m,i); cout<<ans<<endl; } return 0;}
阅读全文
1 0
- HDU 2841 Visible Trees
- HDU 2841 Visible Trees
- HDU 2841 Visible Trees
- hdu 2841 Visible Trees
- Hdu 2841 Visible Trees 容斥原理
- hdu 2841 Visible Trees(计数问题)
- hdu 2841 Visible Trees(容斥原理)
- HDU 2841 - Visible Trees (容斥原理)
- HDU 2841 Visible Trees(数论)
- hdu 2841 Visible Trees【容斥原理】
- HDU 2841 Visible Trees 容斥
- hdu 2841 Visible Trees (容斥原理)
- HDU 2841-Visible Trees(容斥)
- HDU 2841 Visible Trees(容斥原理)
- [HDU 2841]Visible Trees:容斥原理
- Visible Trees HDU
- HDOJ 2841 Visible Trees
- HDU 2841 Visible Trees (数论,容斥原理)
- 暑假集训 第N天 淼 T1
- Mybatis之注解动态拼接sql
- 数据库中的数据输出到屏幕上
- Memcached 与 Redis 实现的对比
- 浏览器与服务端的通信
- hdu 2841 Visible Trees
- 2017/8/8训练日记(继续图论算法|ω・`)顺便cf题解)
- CTS7.1 GTS7.1 详细测试步骤
- Defining Python Source Code Encodings
- QT基于QtWebkit实现浏览器的基本知识点
- Maven工程JDBC错误提示
- flume框架之fan out
- POJ
- 练习10