社区讨论

求救!今天比赛B题,Sub4WA一个点

学术版参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lo7w3rma
此快照首次捕获于
2023/10/27 08:43
2 年前
此快照最后确认于
2023/10/27 08:43
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
#include<stdio.h>
#define ll long long
#define ull unsigned long long
#define pl puts("")
#define pc putchar(' ')
using namespace std;
ll read()
{
	ll x=0;
	int f=1;
	char c=getchar();
	while(!isdigit(c))
	{
		if(c=='-')
			f=-1;
		c=getchar();
	}
	while(isdigit(c))
		x=(x<<1)+(x<<3)+c-'0',c=getchar();
	return x*f;
}
char buf_ans[114];
ll next_n(double last_ans=0,ll get_n=0)
{
	sprintf(buf_ans,"%.6f",last_ans);
	for(ll i=0,x=0;;i++)
	{
		if(buf_ans[i]=='.')
			return get_n^x;
		if(i&1)
			x*=10;
		else
			x=x*10+(buf_ans[i]^48);
	}
}
ll t,n,m;
double ans;
long long qwq(int i)
{
	return floor((i+0.5)*(i+0.5)*(i+0.5)*(i+0.5));
}
map<int,double> mp;
void init()
{
	for(int i=1;i<=5;i++)
		mp[i]=i;
	for(int i=6;i<=39;i++)
		mp[i]=mp[i-1]+0.5;
}
long long sum[31666];
int main()
{
	t=read();
	for(int i=1;i<=31623;i++)
		sum[i]=sum[i-1]+floor((qwq(i)-qwq(i-1))*1.0/i);
	init();
	while(t--)
	{
		n=next_n(ans,read());
		if(n<=39)
		{
			ans=mp[n];
			printf("%.6lf\n",ans);
			continue;
		}
		for(int i=2;i<=31623;i++)
			if(n>=qwq(i-1)&&n<qwq(i))
				ans=sum[i-1]+(n-qwq(i-1))*1.0/i;
		printf("%.6lf\n",ans);
	}
	return 0;
}
有无大佬帮忙看看哪里挂了/kk

回复

0 条回复,欢迎继续交流。

正在加载回复...