HDU2521——反素数
2016-08-05 14:10
363 查看
反素数
[align=center]Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5861 Accepted Submission(s): 3451
[/align]
[align=left]Problem Description[/align]
反素数就是满足对于任意i(0<i<x),都有g(i)<g(x),(g(x)是x的因子个数),则x为一个反素数。现在给你一个整数区间[a,b],请你求出该区间的x使g(x)最大。
[align=left]Input[/align]
第一行输入n,接下来n行测试数据
输入包括a,b, 1<=a<=b<=5000,表示闭区间[a,b].
[align=left]Output[/align]
输出为一个整数,为该区间因子最多的数.如果满足条件有多个,则输出其中最小的数.
[align=left]Sample Input[/align]
3
2 3
1 10
47 359
[align=left]Sample Output[/align]
2
6
240
Hint
2的因子为:1 2
10的因子为:1 2 5 10
解:打表求每个数的因子个数,进行比较,得出结果。
#include<stdio.h> #include<string.h> int x[5005]; int y[5005]; int g(int a,int b) { int i=a; for(;i<=b;i++) { x[i]=i; } for(i=a;i<=b;i++) { for(int j=1;j<=i;j++){ if(i%j==0){ y[i]++; } } } } int main() { int n; int a,b; scanf("%d",&n); while(n--){ scanf("%d%d",&a,&b); memset(x,0,sizeof(x)); memset(y,0,sizeof(y)); g(a,b); int flag=a; int count=0; for(int i=a;i<=b;i++){ if(y[i]>count){ count=y[i]; flag=i; } // printf("%d ",y[i]); } // printf("=========================\n"); // printf("=========================\n%d\n",flag); printf("%d\n",x[flag]); } return 0; }
相关文章推荐
- 简单的四则运算
- 数的奇偶性
- ACMer博客瀑布流分析
- ACM程序设计大赛题目分类
- 2015年acm国内排名
- 计算字符串最后一个单词长度
- ACM网址
- 1272 小希的迷宫
- 1272 小希的迷宫
- hdu 1250 大数相加并用数组储存
- 矩阵的乘法操作
- 变态组合数C(n,m)求解
- 蚂蚁爬行问题
- 蚂蚁爬行问题
- 求两个数的最大公约数【ACM基础题】
- 打印出二进制中所有1的位置
- 杭电题目---一只小蜜蜂
- HDOJ 1002 A + B Problem II (Big Numbers Addition)
- 初学ACM - 半数集(Half Set)问题 NOJ 1010 / FOJ 1207
- 初学ACM - 组合数学基础题目PKU 1833