众所周知,这是个三倍经验(但测评结果还是不一样)
查看原帖
众所周知,这是个三倍经验(但测评结果还是不一样)
848964
hzoi_Shadow楼主2023/1/22 18:18

SP11102样例没过

#include<bits/stdc++.h>
using namespace std;
int g[70000001];
int main()
{
	int n,i,l=0,t;
	g[0]=1;
	g[1]=2;
	g[2]=4;
	while(g[g[l]-1]<2000000000)
	{
		for(i=g[l];i<g[l+1];i++)
		{
			g[i]=g[i-1]+l+1;
  		}
		l++;
	}
	cin>>t;
	for(i=1;i<=t;i++)
	{
		cin>>n;
		cout<<"Case #"<<i<<": "<<upper_bound(g,g+g[l]-1,n)-g<<endl;
	}
	return 0;
}

P8676WA了后三个点

#include<bits/stdc++.h>
using namespace std;
int g[700001];
int main()
{
	int n,i,l=0,t;
	g[0]=1;
	g[1]=2;
	g[2]=4;
	while(g[g[l]-1]<2000000000)
	{
		for(i=g[l];i<g[l+1];i++)
		{
			g[i]=g[i-1]+l+1;
  		}
		l++;
	}
	cin>>n;
	cout<<upper_bound(g,g+g[l]-1,n)-g<<endl;
	return 0;
}

UVA10049AC

#include<bits/stdc++.h>
using namespace std;
int g[700001];
int main()
{
	int n,i,l=0;
	g[0]=1;
	g[1]=2;
	g[2]=4;
	while(g[g[l]-1]<2000000000)
	{
		for(i=g[l];i<=g[l+1];i++)
		{
			g[i]=g[i-1]+l+1;
  		}
		l++;
	}
	while(cin>>n)
	{
		if(n==0)
		{
			break;
		}
		else
		{
			cout<<upper_bound(g,g+g[l]-1,n)-g<<endl;
		}
	}
	return 0;
}
2023/1/22 18:18
加载中...