(http://acm.xidian.edu.cn/problem.php?id=1011)
解法一:找规律普通解法TLE
#include<stdio.h>
int main()
{
long long n;
//freopen("in.txt","r",stdin);
while(scanf("%lld",&n)!=EOF){
long long i=1,s=0;
while(s<=n){
s=i*i;
i++;
}
if(i%2!=0)
printf("oddn");
else
printf("evenn");
}
return 0;
}
解法二:找规律二分法AC
一位好朋友帮忙解答的,在此十分感谢那位好朋友,一起加油,兄弟
感觉这题有种把数据离散化的感觉,规律为1 3 5 7 9……分别表示奇偶奇偶奇……的个数,mid表示编号,具体如下
#include<bits/stdc++.h>
using namespace std;
#define maxn 1e10
long long sum(long long t)
{
return t*(t+2);
}
int main()
{
long long n;
//freopen("in.txt","r",stdin);
while(scanf("%lld",&n)!=EOF)
{
long long r=maxn,l=1,mid=(maxn+1)/2;
while(1)
{
if(sum(mid)>n)
{
if(sum(mid-1)==n){
mid--;
break;
}
if(sum(mid-1)<n)
break;
r=mid;
mid=(l+r)/2;
}
else{
if(sum(mid+1)>=n){
mid++;
break;
}
l=mid;
mid=(l+r)/2;
}
}
if(mid%2)
printf("oddn");
else
printf("evenn");
}
}
最后
以上就是从容火车最近收集整理的关于1011- 数一爱高斯函数的全部内容,更多相关1011-内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复