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;
}