LightOJ 1336 - Sigma Function
原题链接 基础数论中很经典的一道题
题意
给出了σ(n)的计算公式,让你找出整数1~n中有多少对应σ(n)的值是偶数.
思路
观察σ(n)的公式发现,每一个乘项都是 (piei+1 - 1) / (pi - 1) 这样,类比等比数列前n项和公式:
(piei+1 - 1) / (pi - 1) = (1 - piei+1) / (1 - pi) = 1 + pi + pi2 + ... + piei
即 σ(n) = ∏(1 + pi + pi2 + ... + piei)
题目要找σ(n)是偶数的值,我们进一步思考如何保证σ(n)是偶数,能否通过上面得到的乘项来确定σ(n)的奇偶性?
我们首先知道奇数运算有一个性质: 做乘法运算时,只有奇数乘奇数才可以的到奇数.
显然利用奇数来讨论会更加容易,我们可以先找到使σ(n)为奇数的情况数,再用总数减去即可得到偶数的情况数.
利用上面的性质可知,若σ(n)是奇数,则每一个乘项(1 + pi + pi2 + ... + piei)必须全为奇数.
因此可做下面的讨论:
从质因子p入手,我们知道任何除2以外的质数都是奇数.
1. 若质因子中不存在 pi = 2,则 pi必为奇数,pi的幂也必为奇数,
要使(1 + pi + pi2 + ... + piei)为奇数,需保证ei为偶数(确保偶数个奇数项相加,再加1及为奇数)
又因为n = p1e1 * p2e2 * ... * pkek,ei是偶数,则n必为一个完全平方数.
2. 若质因子中存在一个 pi = 2,
则pi = 2对应的乘项必为奇数,无论ek是奇数还是偶数.
然后需保证其他所有乘项为奇数.
n = p1e1 * p2e2 * ... * pkek,
若pi = 2对应ek为偶数,则n必为一个完全平方数.
若pi = 2对应ek为奇数,那么n再除以一个2后,n必为完全平方数.
综合以上两种情况后,我们只需统计1~n中所有的完全平方数以及除以2以后是完全平方数的数之和,再用n减去即可得到最终答案.
代码
#include <iostream>
#include <cmath>
using namespace std;
typedef long long ll;
int main()
{
int t;
cin >> t;
for (int i = ; i <= t; i++) {
ll n;
cin >> n;
ll ans = n;
ans -= (ll)sqrt(n) + (ll)sqrt(n / 2.0);
printf("Case %d: %lld\n", i, ans);
}
return ;
}
LightOJ 1336 - Sigma Function的更多相关文章
- LightOJ - 1336 - Sigma Function(质数分解)
链接: https://vjudge.net/problem/LightOJ-1336 题意: Sigma function is an interesting function in Number ...
- LightOJ 1336 Sigma Function 算数基本定理
题目大意:f(n)为n的因子和,给出 n 求 1~n 中f(n)为偶数的个数. 题目思路:算数基本定理: n=p1^e1*p2^e1 …… pn^en (p为素数): f(n)=(1+p1+p1^2+ ...
- LightOJ 1336 Sigma Function(数论 整数拆分推论)
--->题意:给一个函数的定义,F(n)代表n的所有约数之和,并且给出了整数拆分公式以及F(n)的计算方法,对于一个给出的N让我们求1 - N之间有多少个数满足F(x)为偶数的情况,输出这个数. ...
- LightOJ - 1336 Sigma Function(约数和+整数拆分)
题干中给出函数公式: 其中pi为n的每个素因数,ei为其个数.设该函数为F(x),其意义为x的约数之和.问在1-n中有多少x,令F(x)为偶数. 分析:设f(p)为(p^(e+1)-1)/(p-1). ...
- LightOJ 13361336 - Sigma Function (找规律 + 唯一分解定理)
http://lightoj.com/volume_showproblem.php?problem=1336 Sigma Function Time Limit:2000MS Memory L ...
- 1336 - Sigma Function
1336 - Sigma Function PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB S ...
- 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 ...
- LightOJ1336 Sigma Function —— 质因子分解、约数和为偶数
题目链接:https://vjudge.net/problem/LightOJ-1336 1336 - Sigma Function PDF (English) Statistics Forum ...
- 1336 - Sigma Functio
1336 - Sigma Function Sigma function is an interesting function in Number Theory. It is denoted by t ...
随机推荐
- stl_pair.h
stl_pair.h // Filename: stl_pair.h // Comment By: 凝霜 // E-mail: mdl2009@vip.qq.com // Blog: http://b ...
- [原]NYOJ-大数阶乘-28
大学生程序代写 //http://acm.nyist.net/JudgeOnline/problem.php?pid=28 /*题目28题目信息运行结果本题排行讨论区大数阶乘 时间限制:3000 ms ...
- BZOJ5324 JXOI2018 守卫
传送门 这是我见过的为数不多的良心九怜题之一 题目大意 给定一段$n$个点构成的折线,第$i$个折点的坐标是$(i,h_i)$,你可以在$i$点放置一个视野,定义$i$能看到$j$当且仅当$i$处有视 ...
- [BZOJ1396&2865]识别子串
bzoj1396 bzoj2865 dbzoj1396 dbzoj2865 题面 XX在进行字符串研究的时候,遇到了一个十分棘手的问题. 在这个问题中,给定一个字符串\(S\),与一个整数\(K\), ...
- ACM学习历程—HDU4969 Just a Joke(物理题)
Just a Joke Description Here is just a joke, and do not take it too seriously. Guizeyanhua is the pr ...
- windows下python使用虚拟环境
官方文档: http://pythonguidecn.readthedocs.io/zh/latest/dev/virtualenvs.html virtualenv 是一个创建隔绝的Python环境 ...
- python文件操作 seek(),tell()
seek():移动文件读取指针到指定位置 tell():返回文件读取指针的位置 seek()的三种模式: (1)f.seek(p,0) 移动当文件第p个字节处,绝对位置 (2)f.seek(p,1) ...
- 一个能获取如果hash或search是中文的内容小例子
代码: (function () { var url = "http//baidu.com#a=你好&b=world"; var url1 = "http//ba ...
- MySQL的limit优化
mysql的分页比较简单,只需要limit offset,length就可以获取数据了,但是当offset和length比较大的时候,mysql明显性能下降 1.子查询优化法 先找出第一条数据,然后大 ...
- Learning Python 002 print() 和 input()
Python print() 和 input() print()函数 print()函数可以向终端中输入指定的内容. 输出当个字符串 .py文件中,输入下面的代码,并保存: print('hello ...