程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDOJ 5317 RGCDQ 水

HDOJ 5317 RGCDQ 水

編輯:C++入門知識

HDOJ 5317 RGCDQ 水


 

預處理出每個數有多少個不同的因數,因數最多不超過7

 

RGCDQ

Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 641 Accepted Submission(s): 304



Problem Description Mr. Hdu is interested in Greatest Common Divisor (GCD). He wants to find more and more interesting things about GCD. Today He comes up with Range Greatest Common Divisor Query (RGCDQ). What’s RGCDQ? Please let me explain it to you gradually. For a positive integer x, F(x) indicates the number of kind of prime factor of x. For example F(2)=1. F(10)=2, because 10=2*5. F(12)=2, because 12=2*2*3, there are two kinds of prime factor. For each query, we will get an interval [L, R], Hdu wants to know maxGCD(F(i),F(j)) (L≤i
Input There are multiple queries. In the first line of the input file there is an integer T indicates the number of queries.
In the next T lines, each line contains L, R which is mentioned above.

All input items are integers.
1<= T <= 1000000
2<=L < R<=1000000

Output For each query,output the answer in a single line.
See the sample for more details.

Sample Input
2
2 3
3 5

Sample Output
1
1

Source 2015 Multi-University Training Contest 3

 

 

/* ***********************************************
Author        :CKboss
Created Time  :2015年07月28日 星期二 21時27分27秒
File Name     :HDOJ5317.cpp
************************************************ */

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include

using namespace std;

const int maxn=1000100;

int kut[maxn];
int num[10][maxn];
int ggd[10][10];

void init()
{
	for(int i=2;i=1;j--)
	{
		if(nb[j]==0) continue;
		for(int i=7;i>=1;i--)
		{
			if(nb[i]==0) continue;
			if(j==i) 
			{
				if(nb[j]>1) ans=max(ans,j);
			}
			else ans=max(ans,ggd[i][j]);
		}
	}

	return ans;
}

int main()
{
	//freopen(in.txt,r,stdin);
	//freopen(out.txt,w,stdout);

	init();

	int T_T;
	scanf(%d,&T_T);
	while(T_T--)
	{
		scanf(%d%d,&L,&R);
		int ans=solve();
		printf(%d
,ans);
	}
    
    return 0;
}


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved