LightOJ 1336 Sigma Function

/*
 LightOJ 1336    Sigma Function
 http://lightoj.com/login_main.php?url=volume_showproblem.php?problem=1336
数论 奇偶性
题目求f(n)为偶数的个数
我们发现如果f(n)为奇数,则n为x^2,2*x^2,2^x三种形式,
因为2^x中已经包含剩下两种,
所以只需求x^2和2*x^2的个数即可求得答案。
 *
 打了半天表发现没用233333
 *
 */

#include <cstdio>
#include <algorithm>
using namespace std;
int main()
{
    //freopen("a.in","r",stdin);
    int t;
    scanf("%d",&t);
    long long n;
    int j=1;
    while(t--)
    {
        scanf("%lld",&n);
        long long ans=0;
        for(long long i=1;i*i<=n;i++)
        {
            if(2*i*i<=n)
                ans++;
            ans++;
        }
        ans=n-ans;
        printf("Case %d: %lld\n",j,ans);
        j++;
    }
    return 0;

}

//打表
/*#include <cstdio>*/
//#include <algorithm>
//using namespace std;
//const int Nmax=10001;
//int prime[Nmax];
//int is_prime[Nmax];
//int cnt;
//int m[Nmax];
//int times[Nmax];
//int num;
//void get_prime()
//{
    //for(int i=2;i<Nmax;i++)
        //is_prime[i]=1;
    //for(int i=2;i<Nmax;i++)
    //{
        //if(is_prime[i])
        //{
            //prime[++cnt]=i;
            //for(int j=2;j*i<Nmax;j++)
                //is_prime[i*j]=0;
        //}
    //}
//}

//int pow(int base,int n)
//{
    //int ans=1;
    //while(n>0)
    //{
        //if(n&1)
            //ans*=base;
        //base*=base;
        //n>>=1;
    //}
    //return ans;
//}

//int check()
//{
    //for(int i=1;i<=num;i++)
    //{
        //int a=pow(m[i],times[i]+1)-1;
        //int b=m[i]-1;
        //a/=b;
        //if(!(a&1))
            //return 1;
    //}
    //return 0;
//}

//void get(int n)
//{
    //num=0;
    //int i=1;
    //while(prime[i]*prime[i]<=n)
    //{
        //if(n%prime[i]==0)
        //{
            //++num;
            //times[num]=0;
            //m[num]=prime[i];
        //}
        //while(n%prime[i]==0)
        //{
            //n/=prime[i];
            //times[num]++;
        //}
        //i++;
    //}
    //if(n!=1)
    //{
        //++num;
        //times[num]=1;
        //m[num]=n;
    //}
//}

//void print(int n)
//{
    //int ans=0;
    //for(int i=2;i<=n;i++)
    //{
        //get(i);
        //ans+=check();
    //}
    //printf("%d:%d\n",n,ans);
//}

//int main()
//{
    //get_prime();
    //for(int n=1;n<=1000;n++)
    //{
        //print(n);
    //}
    //return 0;
/*}*/
时间: 2024-10-18 11:37:38

LightOJ 1336 Sigma Function的相关文章

LightOJ - 1336 - Sigma Function(质数分解)

链接: https://vjudge.net/problem/LightOJ-1336 题意: Sigma function is an interesting function in Number Theory. It is denoted by the Greek letter Sigma (σ). This function actually denotes the sum of all divisors of a number. For example σ(24) = 1+2+3+4+6

LightOJ 1336 Sigma Function(数论 整数拆分推论)

--->题意:给一个函数的定义,F(n)代表n的所有约数之和,并且给出了整数拆分公式以及F(n)的计算方法,对于一个给出的N让我们求1 - N之间有多少个数满足F(x)为偶数的情况,输出这个数. --->分析:来考虑F(x)为奇数的情况,给据题目中给我们的公式,,如果F(x)为奇数,那么这个多项式里面的任何一项都必须是奇数,可以知道p = 2时,        p^e - 1肯定是奇数,如果p != 2,当且仅当e为偶数的时候,此项为奇数,证明如下: 原式变形为[ p^(e+1) -p + (

LightOJ 13361336 - Sigma Function (找规律 + 唯一分解定理)

http://lightoj.com/volume_showproblem.php?problem=1336 Sigma Function Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit Status Practice LightOJ 1336 Description Sigma function is an interesting function in Number Theor

light oj 1336 sigma function

常用的化简方法(高中就常用了):     p^(e+1)-1/p-1=             [ p^(e+1) -p + (p-1) ]/ (p-1) = p*(p^e-1)/(p-1) + 1   (也可以直接分解p^e-1) 常用的思路:反面验证  比如本题,求偶数(试探后发现不太好求),则推出奇数条件 再看本题.要想让σ(n)为偶数,只要有一项为偶数即可, 化简变为,观察这个式子,pi都是素数,除2以外都是奇数,所以式子奇偶决定于ei,若ei为奇数,就相当于奇数个奇数(若pi不是2,那

【LightOJ1336】Sigma Function(数论)

[LightOJ1336]Sigma Function(数论) 题面 Vjudge 求和运算是一种有趣的操作,它来源于古希腊字母σ,现在我们来求一个数字的所有因子之和.例如σ(24)=1+2+3+4+6+8+12+24=60.对于小的数字求和是非常的简单,但是对于大数字求和就比较困难了.现在给你一个n,你需要求出有多少个数字的σ是偶数. 注:一个数字的σ指这个数的所有因子之和 题解 现在观察一下数的因子和的奇偶性 如果这个数是一个奇数 那么,它的因子一定成对存在 且每一对的和都是偶数 但是,如果

Sigma Function

做完这道题,我明白了人生的一个巨大道理,那就是: 其他题研究两下,做出来几百行.数论码字前研究半天,做出来十几二十行.做完特别没有成就感... 首先说下这题题意:首先,定义一个函数f[n],即为他所有因子和,他自带一个叼叼的公式 ,然后问对一个给定的n,从1到n,他们的f[n]中有几个是偶数...pi 是n的素数因子,ei 是对应素因子的个数.. 我当时的思路历程: 首先比较简单,如果这k个式子全是奇数,那么f[n]是奇数,只要出现一个偶数,那么结果便是偶数,所以答案应该非常接近n,n大小在1万

kuangbin 带你飞 数学基础

模版整理: 晒素数 void init() { cas = 0; for (int i = 0 ; i < MAXD ; i++) is_prime[i] = true; is_prime[0] = is_prime[1] = false; for (int i = 2 ; i < MAXD ; i++) { if (is_prime[i]) { prime[cas++] = i; for (int j = i + i ; j < MAXD ; j += i) is_prime[j] =

light_oj 1336 约数和奇偶性

light_oj 1336  约数和奇偶性 D - Sigma Function Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit Status Practice LightOJ 1336 Description Sigma function is an interesting function in Number Theory. It is denoted by the Greek

窗体皮肤实现 - 在标题栏上增加快速工具条(四)

前面做的工作就是想在标题区域增加快速工具条.前续的基础工作完成,想要在标题区域增加特殊区域都非常方便.只要在绘制时控制自定义区域需要占用标题区域多少空间,然后直接在所占位置绘制.做这个事情前,稍微把代码规整了下.所以界面皮肤处理放到一个单元中. 主要处理步骤 1.划出一个新区域(整个工具条作为一个区域) 2.处理区域检测(HitTest) 3.如果是新区域,把相应消息传给这个区域处理. 4.响应鼠标点击,执行Action 通过上述步骤就能扩展出所想要的标题区快速工具条的. 标题按钮区域是作为一个