[Swust OJ 217]--Factor(数论,类素数表)

题目链接:http://acm.swust.edu.cn/problem/0217/

Time limit(ms): 2000      Memory limit(kb): 65535

Description

给定一个数,如N=10,我们知道它有如下4个因子:1、2、5、10。现在的问题来了:给你一个区间[A,B],通过编程求出该区间内具有最多因子的那个数,如果有多个具有最多因子的数,输出最小的那个数。

Input

首先输入一个数cas,代表下面共有cas组测试数据。(cas< =20) 
对于每组数据输入一个区间[A,B]其中(1< =A< =B< =1000000)

Output

输出满足条件的那个数。

Sample Input


2

2 6

20 200

Sample Output


6

180

解题思路:在判断一个数是否是素数时,我们就已经知道一个数x的因子是不会大于√x,这里算上本生(除去平方之外,每一个i*j增加两个因子),

     按照打素数表的思路,i,j,循环i*i<max,i*j<maxn为界

     dp[i*i]+=1(两个相同因子),dp[i*j]+=2,然后在给定区间最大值找max_dp,输出下标即可~~~

代码如下:

 1 #include <stdio.h>
 2 using namespace std;
 3 int dp[1000010];
 4 void init(){
 5     for (int i = 1; i*i <= 1000000; i++){
 6         dp[i*i] += 1;
 7         for (int j = i + 1; i*j <= 1000000; j++){
 8             dp[i*j] += 2;
 9         }
10     }
11 }
12 int main()
13 {
14     init();
15     int t, l, r;
16     scanf("%d", &t);
17     while (t--){
18         scanf("%d%d", &l, &r);
19         int ans = l;
20         for (int i = l; i <= r; i++){
21             if (dp[i] > dp[ans])
22                 ans = i;
23         }
24         printf("%d\n", ans);
25     }
26     return 0;
27 }

时间: 2024-12-22 03:05:46

[Swust OJ 217]--Factor(数论,类素数表)的相关文章

[Swust OJ 1125]--又见GCD(数论,素数表存贮因子)

题目链接:http://acm.swust.edu.cn/problem/1125/ Time limit(ms): 1000 Memory limit(kb): 65535 Description 哈特13最近在学习数论问题,然后他智商太低,并学不懂.这不,他又碰到不会的题了.题意非常简单: 有n个数字,求出这些数字中两两最大公约数的最大值.你一定要帮助他解决这个问题啊. Input 多组输入,约25组,直到文件末尾.每组数据占2行,第一行为数字个数n,2<=n<=100000第二行即为对应

swust oj 191--迷宫逃离(打表搜索)

题目链接:http://acm.swust.edu.cn/problem/191/ Time limit(ms): 1000 Memory limit(kb): 65535 江鸟突然想到了一个迷宫逃离的游戏,话说有三个人被困于一个n*m的迷宫里,他们三人都可以向上.向下.向左.向右四个方向进行走动,当然他们所在的初始位置没有障碍物,同时只能走到没有障碍物的格子上,现在江鸟要问你最少需要去掉多少个格子的障碍物,可以使他们三人之间两两互相可达. Description 输入包括多组测试数据,每组测试

swust oj 1026--Egg pain&#39;s hzf

题目链接:http://acm.swust.edu.cn/problem/1026/ Time limit(ms): 3000 Memory limit(kb): 65535 hzf is crazy about reading math recently,and he is thinking about a boring problem. Now there are n integers Arranged in a line.For each integer,he wants to know

[Swust OJ 404]--最小代价树(动态规划)

题目链接:http://acm.swust.edu.cn/problem/code/745255/ Time limit(ms): 1000 Memory limit(kb): 65535 Description 以下方法称为最小代价的字母树:给定一正整数序列,例如:4,1,2,3,在不改变数的位置的条件下把它们相加,并且用括号来标记每一次加法所得到的和. 例如:((4+1)+ (2+3))=((5)+(5))=10.除去原数不4,1,2,3之外,其余都为中间结果,如5,5,10,将中间结果相加

SWUST OJ Euclid&#39;s Game(0099)

Euclid's Game(0099) Time limit(ms): 1000 Memory limit(kb): 65535 Submission: 1855 Accepted: 589 Description Starts with two unequal positive numbers (M,N and M>N) on the board. Two players move in turn. On each move, a player has to write on the boar

网易云课堂_C++程序设计入门(下)_第10单元:月映千江未减明 – 模板_第10单元 - 单元作业:OJ编程 - 创建数组类模板

第10单元 - 单元作业:OJ编程 - 创建数组类模板 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系统将取其中的最高分作为最终成绩. 本单元作业练习创建模板类.单元作业会涉及冒泡排序.线性查找等算法.如果对排序.查找不熟悉,可以自行baidu或者google 依照学术诚信条款,我保证此作业是本人独立完成的. 1 编写一个数组类模板 Array,能够存储不同类型的数组元素.对数组元素进行查找.

集训第六周 数学概念与方法 数论 筛素数 G题

Description 小明对数的研究比较热爱,一谈到数,脑子里就涌现出好多数的问题,今天,小明想考考你对素数的认识.  问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素数,则称之为“美素数”,如29,本身是素数,而且2+9 = 11也是素数,所以它是美素数.  给定一个区间,你能计算出这个区间内有多少个美素数吗? Input 第一行输入一个正整数T,表示总共有T组数据(T <= 10000). 接下来共T行,每行输入两个整数L,R(1<= L <= R <= 10

数据仓库的几类事实表

交易事实表.周期快照事实表和累积快照事实表,事实快照 在数据仓库领域有一个概念叫Transaction fact table,中文一般翻译为“事务事实表”.事务事实表是维度建模的数据仓库中三种基本类型事实表中的一种,另外两种分别是周期快照事实表和累积快照事实表. 事务事实表与周期快照事实表.累积快照事实表使用相同的一致性维度,但是它们在描述业务事实方面是有着非常大的差异的. 事务事实表记录的事务层面的事实,保存的是最原子的数据,也称“原子事实表”.事务事实表中的数据在事务事件发生后产生,数据的粒

swust oj 649--NBA Finals(dp,后台略(hen)坑)

题目链接:http://acm.swust.edu.cn/problem/649/ Time limit(ms): 1000 Memory limit(kb): 65535 Consider two teams, Lakers and Celtics, playing a series of NBA Finals until one of the teams wins n games. Assume that the probability of Lakers winning a game is