题意:输入两个整数L,U(1<=L,U<=1e9,U-L<=10000),统计区间[L,U]的整数中那一个的正约数最多,如果有多个,输出最小值
#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define INF 0x3f3f3f3f
#define mod 1000000007;
using namespace std;
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
const int maxn = 100 + 2;
int main()
{
int T; scanf("%d",&T);
while(T--)
{
int L,U; scanf("%d%d",&L,&U);
int id,mmax = -1;
for(int i = L;i <= U;i++)
{
int num = 0;
for(int j = 1;j <= sqrt(i);j++)
{
if(i % j == 0)
{
num++;
if(i / j != j) num++;
}
}
if(num > mmax)
{
id = i;
mmax = num;
}
}
printf("Between %d and %d, %d has a maximum of %d divisors.\n",L,U,id,mmax);
}
return 0;
}
本文介绍了一个算法,用于找出指定区间内拥有最多正约数的整数,并在存在多个这样的整数时返回最小的一个。通过两层循环遍历区间内的每个数及其可能的因子,统计并比较每个数的正约数数量,最终确定目标整数。
290

被折叠的 条评论
为什么被折叠?



