hdu2521
来源:互联网 发布:avtt天堂网最新域名 编辑:程序博客网 时间:2024/06/10 13:57
1001.
题目来源:http://acm.hdu.edu.cn/diy/contest_showproblem.php?pid=1007&cid=31396&problem=Problem%20%20G
解法或类型:循环结构。
Problem Description
反素数就是满足对于任意i(0<i<x),都有g(i)<g(x),(g(x)是x的因子个数),则x为一个反素数。现在给你一个整数区间[a,b],请你求出该区间的x使g(x)最大。
Input
第一行输入n,接下来n行测试数据
输入包括a,b,1<=a<=b<=5000,表示闭区间[a,b].
Output
输出为一个整数,为该区间因子最多的数.如果满足条件有多个,则输出其中最小的数.
Sample Input
3
2 3
1 10
47 359
Sample Output
2
6
240
题意描述
给一个闭区间,输出在这个区间内因子最多的那个数,如果最多的有多个则输出最小的那个数。
解题思路
先把5000以内所有数的因子个数打个表,然后在比较出最大的因子,记住因子最大的那个数,因为比较是从前往后,因子数相同是不会把前面的顶掉。
时空分析:
程序代码:
#include<stdio.h>
#include<string.h>
#defineN 5000
intc[N+10],i,j,t;
void fun()
{
memset(c,0,sizeof(c));
for(i=1;i<=N;i++)
{
t=0;
for(j=1;j<=N;j++)
{
if(i%j==0)
t++;
}
c[i]=t;
}
}
intmain()
{
int a,b,m,i,y,f;
fun();
scanf("%d",&m);
while(m--)
{
scanf("%d%d",&a,&b);
y=c[a];
f=a;
for(i=a+1;i<=b;i++)
{
if(y<c[i])
{
y=c[i];
f=i;
}
}
printf("%d\n",f);
}
return 0;
}
错误分析:
1、开始比较用的冒泡,先把因子和因子代表的数排序再比较输出,太麻烦还出错,最后发现这样写很简单。
- hdu2521
- hdu2521
- HDU2521:反素数
- HDU2521反素数
- HDU2521:反素数
- HDU2521 反素数【水题】
- HDU2521 反素数
- hdu2521:反素数
- HDU2521 求因数个数
- HDU2521:反素数 .
- HDU2521(求因子个数)
- HDU2521——反素数
- hdu2521 反素数(求约数个数)
- HDU2521 反素数【因子数量+打表】
- 40个Java多线程问题总结
- Android Studio断点无效有红叉
- Linux基础指令
- JS对于字符串的切割截取
- Javascript中的Bind,Call和Apply
- hdu2521
- page、request、session、application四个作用域的区别
- 静态库符号文件冲突的解决办法,已实践OK, mark
- CodeForces
- Dubbo——动态适配器类
- css初始化通用代码(集合)
- JSTL标准标签库之核心标签(二)
- 水经注软件十一岁了,万能地图下载器终于优惠了
- JVM(HotSpot) 垃圾收集器