- 链接
代码1 : 每次都要调用一次函数 有些浪费时间 !!
-
View Co
de Problem : 1032 ( The 3n + 1 problem ) Judge Status : Accepted RunId : 10087220 Language : C Author : sws Co#include<stdio.h> int f( int x ) { int y = 1; while( x != 1 ) { y ++; if( x%2 ) x = 3*x+1; else x = x/2; } return y; } int main() { int i, j, maxn, m, k, n; while(scanf("%d%d",&i,&j)==2){ //只有当i,j都正确读入整数时(2项),才进行下一步 //scanf( "%d%d", &i, &j ); maxn = 0; n = i; m = j; if( i>j) { k = i; i = j; j = k; } for( ; i<=j; i ++ ) if( maxn < f(i) ) maxn = f(i); //n = n > m? n:m; printf( "%d %d %d\n", n, m, maxn ); } return 0; }de Render Status : Rendered By HDOJ C Co de Render Version 0.01 Beta #include<stdio.h> int f( int x ) { int y = 1; while( x != 1 ) { y ++; if( x%2 ) x = 3*x+1; else x = x/2; } return y; } int main() { int i, j, maxn, m, k, n; while(scanf("%d%d",&i,&j)==2){ //只有当i,j都正确读入整数时(2项),才进行下一步 //scanf( "%d%d", &i, &j ); maxn = 0; n = i; m = j; if( i>j) { k = i; i = j; j = k; } for( ; i<=j; i ++ ) if( maxn < f(i) ) maxn = f(i); //n = n > m? n:m; printf( "%d %d %d\n", n, m, maxn ); } return 0; }
查看代码---运行号:724144----结果:Accepted
运行时间:
2014-02-18 14:32:18 | 运行人:
shengweisong
01.
#include<stdio.h> //TL原因估计是每次都要调用函数
02.
#define MAX 10001
03.
int
a[MAX];
04.
int
f(
int
x )
05.
{
06.
int
y = 1;
07.
while
( x != 1 )
08.
{
09.
y ++;
10.
if
( x%2 )
11.
x = 3*x+1;
12.
else
13.
x = x/2;
14.
15.
}
16.
return
y;
17.
}
18.
void
CountA(){
19.
for
(
int
i = 1; i != MAX; ++i)
20.
a[i] = f(i);
21.
}
22.
int
main()
23.
{
24.
CountA(); // 如在前面加一个void 就不起作用了!! 就在这我纠结了半天!!
25.
register
int
i, j, maxn, m, k, n;
26.
27.
while
(
scanf
(
"%d%d"
,&i,&j)!=EOF ){
//只有当i,j都正确读入整数时(2项),才进行下一步
28.
//scanf( "%d%d", &i, &j );
29.
maxn = 0;
30.
n = i;
31.
m = j;
32.
if
( i>j)
33.
{
34.
k = i;
35.
i = j;
36.
j = k;
37.
}
38.
for
( ; i<=j; i ++ )
39.
if
( maxn < a[i] )
40.
maxn = a[i];
41.
//n = n > m? n:m;
42.
printf
(
"%d %d %d\n"
, n, m, maxn );
43.
}
44.
return
0;
45.
}