一次调试好之后提交上去的,显示的状态是ACCEPT. Run time 是 00:00.01,Memory 是840K,估计程序还可以优化,不过这个放在以后在做了,现在可以一步一步的将上面的题目能解决的都解决了.题目标号是2818,连接是
浙江大学ACM2828题目.程序代码如下所示:
/*
Given positive integers B and N, find an integer A such that AN is as close as possible to B. (The result A is an approximation to the Nth root of B.) Note that AN may be less than, equal to, or greater than B. Input: The input consists of one or more pairs of values for B and N. Each pair appears on a single line, delimited by a single space. A line specifying the value zero for both B and N marks the end of the input. The value of B will be in the range 1 to 1,000,000 (inclusive), and the value of N will be in the range 1 to 9 (inclusive). Output: For each pair B and N in the input, output A as defined above on a line by itself. Example Input: 4 3 5 3 27 3 750 5 1000 5 2000 5 3000 5 1000000 5 0 0 Example Output: 1 2 3 4 4 4 5 16
*/
#include
<
iostream.h
>
#include
<
stdio.h
>
#define
MAX_SIZE 100
long
get_A(
int
i,
int
N){
long
A
=
1
;
for
(
int
j
=
0
;j
<
N;j
++
) A
*=
i;
return
A;}
int
main(){
int
N;
long
B;
long
max,max_last; max
=
0
; cin
>>
B
>>
N;
while
(N
&&
B) { max
=
0
;
//
清0操作.
if
(B
<=
1000000
&&
B
>=
0
&&
N
>=
0
&&
N
<=
9
) {
int
i
=
0
;
while
(max
<
B) { i
++
; max
=
get_A(i,N); }
if
(max
==
B) { cout
<<
i
<<
endl; }
else
{ max_last
=
get_A(
--
i,N); i
++
;
if
((B
-
max_last)
<=
(max
-
B)) { cout
<<--
i
<<
endl; }
else
cout
<<
i
<<
endl; } }
else
{ cout
<<
"
Input data error
"
<<
endl; } cin
>>
B
>>
N; }
return
0
;}