《ACM程序设计》书中题目 T
来源:互联网 发布:苹果6s只能用2g网络 编辑:程序博客网 时间:2024/05/22 17:04
题目简要:
给定正整数B和N,找到一个整数A,使得AN尽可能接近B.(结果A是B的第N个根的近似值)。注意,AN可以小于,等于或大于比B.
输入:输入由B和N的一对或多对值组成。每对出现在单个行上,由单个空格分隔。 指定B和N的值零的线标记输入的结束。B的值在1至1,000,000(包括)的范围内,N的值在1至9(包括1和9)的范围内。
输出:对于输入中的每对B和N,如上定义的输出A本身在一行上。
例如:
Example Input:Example Output:4 3
5 3
27 3
750 5
1000 5
2000 5
3000 5
1000000 5
0 01
2
3
4
4
4
5
16
5 3
27 3
750 5
1000 5
2000 5
3000 5
1000000 5
0 01
2
3
4
4
4
5
16
解题思路:
这道题其实只需要解决开根号的问题就好了,将b开n次根,取到double型的a,然后在判断,哪一个是更接近的整数。
基本思路还是比较容易的,只是在一开始开根号是不知如何是好。不过后来发现其实开n次根,其实就是1/n次方,所以用pow直接就可解决。
附代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
vector<int>s;
int A1,A2,b,n,i;
double a;
while(cin>>b>>n&&b!=0&&n!=0)
{
a=pow(b,1.0/n);
A1=a;
A2=a+1;
if(fabs(b-(pow(A1,n)))>fabs(b-(pow(A2,n))))
s.push_back(A2);
else
s.push_back(A1);
}
for(i=0;i<s.size();i++)
{
cout<<s[i]<<endl;
}
return 0;
}
using namespace std;
int main()
{
vector<int>s;
int A1,A2,b,n,i;
double a;
while(cin>>b>>n&&b!=0&&n!=0)
{
a=pow(b,1.0/n);
A1=a;
A2=a+1;
if(fabs(b-(pow(A1,n)))>fabs(b-(pow(A2,n))))
s.push_back(A2);
else
s.push_back(A1);
}
for(i=0;i<s.size();i++)
{
cout<<s[i]<<endl;
}
return 0;
}
解题感受:
这是我第一次一次提交就A,感觉很兴奋,收获就是需要拓展思维,不能拘泥。要习惯从多个角度看问题。这是3月10号的第一道题,其实已经晚上11点了·····由于白天满课实在没有时间,只好晚上打了···
1 0
- 《ACM程序设计》书中题目 T
- ACM程序设计》书中题目--problem t
- 《ACM程序设计》书中题目―T
- 《ACM程序设计》书中题目T
- 《ACM程序设计》书中题目 T
- ACM程序设计 书中题目T
- 《ACM程序设计》书中题目 T
- 《ACM程序设计》书中题目T 第二十题 找底数
- ACM程序设计书中题目--T(次方问题)
- acm程序设计书中的题目t
- 《ACM书中题目》T
- ACM书中题目 T
- 《ACM程序设计》书中题目
- ACM程序设计书上题目T
- 《ACM程序设计》书中题目T(谁的几次方最接近它O.O。。。)
- acm书中题目 t-20
- 《ACM程序设计》书中题目--problem j
- 《ACM程序设计》书中题目 J
- nodejs内置模块
- python爬虫—hello world!
- JavaScript基础知识(8)
- 如何调试fft与ntt
- 数据结构与算法之双向链表 <二>
- 《ACM程序设计》书中题目 T
- 外观模式
- JavaScript基础知识(9)
- 剑指offer 二进制中1的个数
- 使用并设置urxvt终端
- Sicily Single-link Clustering
- 状态dp hdu1074
- unity状态模式
- vue 学习笔记二之vue2与vue1的选择