一次调试好之后提交上去的,显示的状态是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 ;
}
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 ;
}