53 条题解
-
0xiefeng2 LV 3 @ 2007-07-29 17:08:51
就是找1-n之间约数个数最多的数,那么搜索时就枚举每个质数的个数,因为范围很大,所以只要用到前十个素数就够了,再加一个超强剪枝--若枚举前一个素数的个数为零,则不必再枚举下去了
-
02007-07-22 13:18:30@
一:在[1,2×109]中,一个数最多有10个不同的质因子
二:一个反质数的质因子必然是从2开始连续的质数。
对于正整数m.. 必然等于2^k1 × 3^k2 × 5^k3 …………(ki>=0) (如果ki=0
则ki+1 到k无穷都为0)
对于一个数 N 如果 2^k -
02007-03-23 20:24:31@
dfs
动态规划大材小用 -
02007-02-06 18:22:12@
dfs。
-
02006-11-04 11:08:22@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms硬搜就是了
-
02006-11-01 18:12:40@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms蛮去。。。
-
02006-10-29 10:18:01@
楼下的辛苦啦,写这么长。
我呢,先暴力,再交表…… -
02006-10-15 20:35:13@
只是求约数最多且最大。
自己想,别老看别人的结果。 -
02006-10-09 12:13:51@
交表
1,2,4,6,12,24,36,48,60,120,180,240,360,720,840,1260,
1680,2520,5040,7560,10080,15120,20160,25200,27720,45360,
50400,55440,83160,110880,166320,221760,277200,332640,498960,
554400,665280,720720,1081080,1441440,2162160,2882880,3603600,
4324320,6486480,7207200,8648640,10810800,14414400,17297280,
21621600,32432400,36756720,43243200,61261200,73513440,110270160,
122522400,147026880,183783600,245044800,294053760,367567200,
551350800,698377680,735134400,1102701600,1396755360这就是所有范围内的反质数。
-
02006-07-20 18:22:48@
交表即可。
这个原题不是ZJOI -
-12017-01-20 23:35:13@
无耻的用了别人的表。。。自己打表感觉时间好长。。。懒得打了
```c++#include<cstdio>
#include<algorithm>
#include<cstdlib>
#include<cstring>
int main()
{
int sh[69] = {1,2,4,6,12,24,36,48,60,120,180,240,360,720,840,1260,
1680,2520,5040,7560,10080,15120,20160,25200,27720,45360,
50400,55440,83160,110880,166320,221760,277200,332640,498960,
554400,665280,720720,1081080,1441440,2162160,2882880,3603600,
4324320,6486480,7207200,8648640,10810800,14414400,17297280,
21621600,32432400,36756720,43243200,61261200,73513440,110270160,
122522400,147026880,183783600,245044800,294053760,367567200,
551350800,698377680,735134400,1102701600,1396755360,2000000000
};
int n;
scanf("%d",&n);
for(int i=0;i<69;i++)
if(n>=sh[i]&&n<=sh[i+1]) printf("%d",sh[i]);
return 0 ;
} -
-12016-07-31 09:57:23@
#include <bits/stdc++.h> long a[68]={1,2,4,6,12,24,36,48,60,120,180,240,360,720,840,1260,1680,2520,5040,7560,10080,15120,20160,25200,27720,45360,50400,55440,83160,110880,166320,221760,277200,332640,498960,554400,665280,720720,1081080,1441440,2162160,2882880,3603600,4324320,6486480,7207200,8648640,10810800,14414400,17297280,21621600,32432400,36756720,43243200,61261200,73513440,110270160,122522400,147026880,183783600,245044800,294053760,367567200,551350800,698377680,735134400,1102701600,1396755360}; int main() { long n; scanf("%ld",&n); if (n >= 1396755360) printf("%d",1396755360); for (int i = 0;i < 68;i++) if (a[i] <= n && a[i+1] > n) { printf("%ld",a[i]); exit(false); } }
-
-12016-03-27 09:20:45@
不要打表啊~
pascal
const
p:array[1..10] of longint=(2,3,5,7,11,13,17,19,23,29);
var
n,ans,num:int64;
procedure dfs(x,y,z,k:int64);
var
i:longint;
begin
if (num<k) or ((num=k) and (x<ans)) then
begin
ans:=x;
num:=k;
end;
for i:=1 to y do
begin
x:=x*p[z];
if x>n then exit;
dfs(x,i,z+1,k*(i+1));
end;
end;
begin
read(n);
dfs(1,n,1,1);
write(ans);
end.