首页 > 代码库 > 正方形大阵(C++)
正方形大阵(C++)
正方形大阵 |
难度级别:D; 运行时间限制:1000ms; 运行空间限制:256000KB; 代码长度限制:2000000B |
试题描述
|
|
输入
|
第一行一个正整数n代表询问次数。
接下来n行每行一个不超过八位的小数k代表一组询问。 |
输出
|
输出共n行,代表每次询问的答案;如果有无数个交点,输出“-1”。
|
输入示例
|
3
0.375 0.001 0.478 |
输出示例
|
-1
4 20 |
其他说明
|
100%的数据满足1<=n<2*1000,0<k<0.5。选自tyvj
数学神题…… |
#include<iostream>
using namespace std;
double a[2004],A[2004];
int b[2004];
int n;
double k;
void init()
{
a[1]=0.25;
A[1]=0.25;
a[0]=0;
b[0]=4;
for(int i=2;i<=2001;i++) {A[i]=(double)A[i-1]/2;}
for(int i=2;i<=2001;i++) {a[i]=(double)(a[i-1]+(double)A[i]);}
for(int i=1;i<=2001;i++) b[i]=b[i-1]+4;
}
void ans(double k)
{
for(int i=1;i<=2001;i++) if(a[i]==k) {cout<<"-1"<<endl;return ;}
for(int i=1;i<=2001;i++) if(a[i-1]<k&&a[i]>k) {cout<<b[i-1]<<endl;return ;}
}
int main()
{
init();
cin>>n;
while(n--)
{
cin>>k;
ans(k);
}
}
正方形大阵(C++)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。