45 条题解
-
0丿SEX丶elope LV 8 @ 2012-11-16 22:29:30
这个大水题。。。我就搞不懂楼下怎么写了这么多
点这里查看程序源码+详细题解
-
02012-11-16 22:07:14@
var
a,b,c,d,f,g:longint;n:longint;
begin
read(n);
for a:= 2 to (n div 2)+1 do begin
g:=(a div 2)+1;
for c:=2 to g do
if a mod c=0 then d:=1;
if d=0 then
for b:=2 to (n div 2)+1 do begin
for c:=2 to g do
if b mod c=0 then f:=1;
if (f=0)and(a*b=n) then if a>b then begin write(a); exit end
else begin write(b); exit end;
f:=0;
end;
d:=0;f:=0;
end;
end. -
02012-11-16 20:45:18@
第二个发题解,第8个AC
├ 测试数据 01:答案正确... (8ms, 404KB)
├ 测试数据 02:答案正确... (16ms, 404KB)
├ 测试数据 03:答案正确... (16ms, 404KB)
├ 测试数据 04:答案正确... (31ms, 404KB)
├ 测试数据 05:答案正确... (31ms, 404KB)
├ 测试数据 06:答案正确... (16ms, 404KB)
├ 测试数据 07:答案正确... (0ms, 404KB)
├ 测试数据 08:答案正确... (16ms, 404KB)
├ 测试数据 09:答案正确... (0ms, 404KB)
├ 测试数据 10:答案正确... (0ms, 400KB)---|---|---|---|---|---|---|---|-
Accepted / 100 / 138ms / 404KB -
02012-11-16 19:39:55@
这数据应该不是原题的数据吧(废话)
不过数据是挺弱的,刚开始想多了,以为还包括24(输出3)2*2*2*2*2*2*2*2*7这样的数,还好没有,都是每个质数的一次方,希望竞赛的数据也如此啊!
代码:
program P1773;
var
i,n,k:integer;
begin
read(n);
for i:=2 to n-1 do
if n mod i=0 then begin writeln(n div i); break; end;
end.
(为了防抄袭,打了许多空格) -
-12017-07-23 11:43:30@
我的代码效率很低...
但我想简单说一下思路:
1.既然这个数是两个质因数的乘积,记此数为n,则他的因数一定是 1,a,b,n (a*b=0,a和b为素数)
2.a与b中,假设a<b,那么有 a<=sqrt(n) 和 b>=sqrt(n)
3.n只能被a,b整除,因为a和b不能被分解成其他数的乘积(唯一分解定理)
然后知道了上面这些,这道题就能快速的解决出来了!
#include<iostream> #include<cmath> using namespace std; int n; int main () { ios::sync_with_stdio(false); cin>>n; for(int i=2;i<=sqrt(n);i++) if (n%i==0) { cout<<n/i; break; } return 0; }
信息
- ID
- 1773
- 难度
- 3
- 分类
- (无)
- 标签
- (无)
- 递交数
- 2133
- 已通过
- 1044
- 通过率
- 49%
- 被复制
- 4
- 上传者