我是靠谱客的博主 从容火车,这篇文章主要介绍1011- 数一爱高斯函数,现在分享给大家,希望可以做个参考。

(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表示编号,具体如下
打表1
打表2

#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-内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部