1. 程式人生 > >hdu 2841 容斥定理+思維

hdu 2841 容斥定理+思維

#include<iostream>
#include<cstring>
#include<cstdio> 
#include<cmath>
using namespace std;
typedef long long ll;
int a[25000];
int q[1000005];
ll num;
void makeprime(ll n)
{
//	cout << "start   " << n <<  endl;
	for(ll i=2;i<=sqrt(n);i++)
	{
		if(n%i==0)
		{
//			cout << i << endl;
			a[num++]=i;
			while(n%i==0)
			{
				n/=i;
			}
		}
	}
//	cout << n << endl;
	if(n!=1)
	{
//		cout << "ok"<< endl;
		a[num++]=n;
	}
//	cout << num << endl;
}
ll solve(ll m)
{
	ll s,t=0,ans=0;
	q[t++]=-1;
	for(ll i=0;i<num;i++)
	{
		s=t;
		for(ll j=0;j<s;j++)
		{
			q[t++]=-1*q[j]*a[i];
		}
	}
	for(ll i=1;i<t;i++)
	{
//		cout << q[i]<< endl;
		ans+=(m/q[i]);
	}
	return ans;
	
}
int main()
{
	int times;
	scanf("%d",×);
	while(times--)
	{
		ll n,m;
		scanf("%lld%lld",&n,&m);
		ll ans=0;
		if(n>m)
		{
			ll tmp=n;
			n=m;
			m=tmp;
		}
		for(ll i=1;i<=n;i++)
		{
			num=0;
			makeprime(i);
//			cout << '*'<<num << endl;
			ans+=(m-solve(m));
//			cout << ans << endl;
		}
		printf("%lld\n",ans); 
	}	
} 

相關推薦

hdu 2841 定理+思維

#include<iostream> #include<cstring> #include<cstdio> #include<cmath> using

HDU 4135 定理 分解質因數

題意:給定一段區間內求與n互質的個數 由於尤拉函式有侷限性,所以可以用容斥做; 如果單純的解一段區間很難,所以我們可以從反面來做要求的 【a,b】=【1,b】-【1,a-1】 下面說下怎麼容斥: 比如一段區間【1,30】另外給定一個n=10 1.分解n的素因子 

HDU 6363 定理

題目連結 題意: 將nn個相同的小球放入kk個不同的箱子,箱子可以為空。假設對於一個方案,cnt[i]cnt[i]表示第ii個箱子中的小球數,則該方案的價值為:gcd(2Fib[cnt[1]]−

hdu 2841(原理)

題意:有一個農民,站在(0,0)點,從(1,1)點到(m,n)點每個點上有棵樹,問這個農民能看到多少棵樹。樹被擋就看不到 分析:畫個圖,我們就能發現一個重大問題,當兩點座標互質時就能看到樹,否則就不

HDU 1695 GCD(定理

font hint cup show lan orm required stdio.h test case GCD Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/

HDU 5201 The Monkey King(組合數學)(隔板法+定理+費馬小定理)

逆元 cst 大於 ont amp space pro http strong http://acm.hdu.edu.cn/showproblem.php?pid=5201題意:給你n個桃子要你分給m只猴子,猴子可以得0個桃子,問有多少種方法,但是有一個限制條件: 第一只猴

hdu-1695 GCD---定理

amp color ret namespace () 1的個數 ini names target 題目鏈接: http://acm.hdu.edu.cn/showproblem.php?pid=1695 題目大意: 求解區間[1, n]和[1, m]中有多少對不同的x和y使

題解報告:hdu 4135 Co-prime(定理入門)

分解 容斥 ret amp eve 素因子 nbsp desc 使用 Problem Description Given a number N, you are asked to count the number of integers between A and B i

hdu 4135 Co-prime 【定理應用】

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=4135 容斥定理求一個區間內與n互素的數有幾個; 和模板差不多,只是區間 [1,R] 變成 [L,R],所以可以求出 [1,L] 和 [1,R] 的互素的數的shu'lian再相減,注意

HDU 4135 Co-prime】定理+質因數分解

HDU4135 題意 求A-B之間與N互質的數的個數 做法 我們首先對N分解質因數,再對其所有因子進行容斥,最後能得到所有與N不互質的數的個數,最後用n減去這個個數,就是與n互質的數的個數。 #include<stdio.h> #include<

hdu 4135 Co-prime(分解質因數+定理

【題目】 Co-prime Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 8210    

HDU 6053 TrickGCD 【定理】【莫比烏斯函式】

Problem Description You are given an array A , and Zhu wants to know there are how many different array B satisfy the following co

HDU-1796 How many integers can you find(定理和二進位制的運用)

HDU-1796 How many integers can you find 題意: 有多組輸入,第一行為n和m,第二行為m個數字。要求統計小於n的數字中有多少個能被第二行中的m個數字整除。 注意!第二行的輸入中可能為零,所以要注意輸入時只有大於

hdu 2197 本原串(定理

本原串 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 547    Accepted Submission

hdu 1695 GCD(定理

GCD Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4308    Accepted Submissio

51nod1284定理

photos nod main tle bsp com tool hot baidu 1284 2 3 5 7的倍數 基準時間限制:1 秒 空間限制:131072 KB 分值: 5 難度:1級算法題 給出一個數N,求1至N中,有多少個數不是2 3 5 7

hdu 5514 原理

eof log air int == tac lan tags ini hdu 5514 題意: 有 n 只青蛙,一開始都在 0 點。有一堆圍成一圈的石子,石子的編號是從 0 ~ (m-1)。 所有青蛙只能順時針跳,每個青蛙可以一次跳a[i]格。問這些青蛙踩過的石子的編號

P2567 [SCOI2010]幸運數字 DFS+定理

spa mes names align pri efi 很多 個數 十進制 P2567 [SCOI2010]幸運數字 題目描述 在中國,很多人都把6和8視為是幸運數字!lxhgww也這樣認為,於是他定義自己的“幸運號碼”是十進制表示中只包含數字6和8的那些號碼,比如68,6

【ZOJ - 2836】【Number Puzzle】(定理

題目: Given a list of integers (A1, A2, ..., An), and a positive integer M, please find the number of positive integers that are not greater than M

UVA11806 定理

UVA11806【拉拉隊】Cheerleaders .題意描述 本題大致意思是講:給定一個廣場,把它分為M行N列的正方形小框。現在給定有K個拉拉隊員,每一個拉拉隊員需要站在小框內進行表演。但是表演過程中有如下要求: (1)每一個小框只能站立一個拉拉隊員; (2)廣場的第一行,最後一行