HDU 4135——Co-prime(容斥原理&&二進位制列舉)
模板
void prime(ll n)
{
k=0;
for(int i=2;i*i<=n;i++)
{
if(n%i==0)
{
Prime[k++]=i;
while(n%i==0)
n/=i;//這一步是把相同質因子除去,如12有兩個2
}
}
if(n>1)
Prime[k++]=n;
}
ll Find(ll num)
{
ll ans=0,temp,flag;
for(ll i=1;i<(ll)(1<<k);i++)
{
temp=1;
flag=0;
for(ll j=0;j<=k;j++)
{
if(i&(ll)(1<<j))
{
flag++;
temp*=Prime[j];
}
}
//cout<<temp<<endl;
if(flag&1)
ans+=num/temp;
else
ans-=num/temp;//奇加偶減
}
return ans;
}
#include<iostream>
#include<algorithm>
#include<vector>
#include<cmath>
#include<cstring>
#include<string>
#include<cstdio>
#include<queue>
#include<set>
using namespace std;
#define ll long long
#define maxn 1000010
ll a,b,n;
ll Prime[maxn];
int k;
void prime(ll n)
{
k=0;
for(int i=2;i*i<=n;i++)
{
if(n%i==0)
{
Prime[k++]=i;
while(n%i==0)
n/=i;//這一步是把相同質因子除去,如12有兩個2
}
}
if(n>1)
Prime[k++]=n;
}
ll Find(ll num)
{
ll ans=0,temp,flag;
for(ll i=1;i<(ll)(1<<k);i++)
{
temp=1;
flag=0;
for(ll j=0;j<=k;j++)
{
if(i&(ll)(1<<j))
{
flag++;
temp*=Prime[j];
}
}
//cout<<temp<<endl;
if(flag&1)
ans+=num/temp;
else
ans-=num/temp;//奇加偶減
}
return ans;
}
int main()
{
int t;
int flag=0;
cin>>t;
while(t--)
{
cin>>a>>b>>n;
prime(n);
cout<<"Case #"<<++flag<<": "<<b-a+1-Find(b)+Find(a-1)<<endl;
}
return 0;
}
參考連結:
https://blog.csdn.net/qq_36336399/article/details/76406320
相關文章
- HDU 4135 Co-prime(容斥原理+分解質因數)
- 二進位制陣列陣列
- 容斥原理
- 【模板】容斥原理
- 二進位制陣列 subarray() 方法陣列
- 二進位制與二進位制運算
- 進位制詳解:二進位制、八進位制和十六進位制
- JavaScript 二進位制、八進位制與十六進位制JavaScript
- HDU 6034 Balala Power!(大數進位制)
- JavaScript二進位制陣列建立注意點JavaScript陣列
- 二進位制
- (二進位制)
- 十進位制——二 (八、十六 )進位制
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- 【進位制轉換】二進位制、十六進位制、十進位制、八進位制對應關係
- 二進位制、十進位制與十六進位制相互轉化
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- 計算機基礎進位制轉換(二進位制、八進位制、十進位制、十六進位制)計算機
- 二進位制轉十進位制快速方法
- JAVA 二進位制,八進位制,十六進位制,十進位制間進行相互轉換Java
- 什麼是二進位制?二進位制如何轉換?
- 【Linux】檢視二進位制檔案內容_hexdumpLinux
- Cocoapods 二進位制
- 04 二進位制
- leetcode -- 二進位制LeetCode
- 容斥原理學習筆記筆記
- 容斥原理——數學知識
- JavaScript十進位制轉換為二進位制JavaScript
- 十進位制轉二進位制推導(草稿)
- [計算機基礎] 計算機進位制轉換:二進位制、八進位制、十進位制、十六進位制計算機
- 進位制之間的轉換之“十六進位制 轉 十進位制 轉 二進位制 方案”
- 一看就懂二進位制、八進位制、十六進位制數轉換十進位制
- 整數轉化成八進位制、十六進位制、二進位制,以及轉回
- 進位制與二進位制及相關轉換
- 2020東北林業大學acm集訓第五天 二進位制操作與二進位制列舉(附相關習題及AC程式碼)ACMC程式
- 二進位制或序列
- 資訊學奧賽初賽天天練-71-NOIP2016普及組-基礎題2-進位制轉換、二進位制轉八進位制、八進位制轉二進位制、二叉樹陣列儲存、定址空間二叉樹陣列