UVA 11395——Sigma Function
来源:互联网 发布:斑马标签机打印软件 编辑:程序博客网 时间:2024/05/19 02:20
题目描述:
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+8+12+24=60. Sigma of small numbers is easy to find but for large numbers it is very difficult to find in a straight forward way. But mathematicians have discovered a formula to find sigma. If the prime power decomposition of an integer is
Then we can write,
For some n the value of σ(n) is odd and for others it is even. Given a value n, you will have to find how many integers from 1 to n have even value of σ.
输入一个n然后输出n以内的因子和为偶数的数的个数
样例:
input:
4
3
10
100
1000
output:
Case 1: 1
Case 2: 5
Case 3: 83
Case 4: 947
题意非常容易理解,但是这道题n的数据范围是10的12次方,单单只是循环一遍就会TLE,更别谈找因子求和了,所以这个题再度用到之前提到的算数基本定理的应用从第二个式子出发的话就可以发现只要式子中的任意一项是偶数最后的结果就必然是偶数,我们观察这个式子的特点,每次求和都会有一个1,那么如果后面pi的n次幂只和为偶数的话这一项的结果结果就会为奇数,而对于质因子而言,质数中只有2是偶数,2的任意n次幂之和肯定是偶数,+1之后就会变成奇数,所以如果这个数的质因子都是2,也就是说这个数是2的n次方的话,他的因子和就肯定是奇数。再看其他情况,现在我们可以确定因子2的那一项的结果肯定是奇数,那么只能使其他项的结果为偶数,结果才可能为偶数,对于一个奇数,任意n次方肯定都为奇数,那么只要项数是奇数,那我算出来的结果就肯定是奇数,+1之后变成偶数就可以满足题目要求,我们来求反面的情况,如果要使我最后的结果为奇数,那么我每一项的结果算出来应该都是奇数,也就是说我的每一个质因子都出现了偶数次,这种情况很明显就是完全平方数,所以最后的答案只需要从n个数中减去完全平方数的个数和2的n次方的数的个数就行,但是这两种数中又存在重叠的部分,不难算出其实我最后需要减去的是x^2和2*x^2类型的数,那么怎么算这两种数的个数,其实直接开方就行了,sqrt算出的是小于等于该数的最大的x^2的x其实就代表了n以内有x个完全平方数。
AC代码:
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<string>#include<stack>#include<queue>#include<algorithm>using namespace std;const int MAXM=1000010;int main(){ int T; scanf("%d",&T); int cas=1; while(T--) { long long n; scanf("%lld",&n); long long num1=sqrt(n); long long num2=sqrt(n/2); printf("Case %d: %lld\n",cas,n-num1-num2); cas++; } return 0;}
阅读全文
0 0
- UVA 11395——Sigma Function
- Uva 11395 - Sigma Function 规律 对数
- Uva 11395 - Sigma Function (算术基本定理)
- Lightoj1336——Sigma Function(因子和)
- Sigma Function
- Sigma Function
- Sigma Function
- Sigma Function
- lightOJ 1336 Sigma Function
- LightOJ 1336- Sigma Function
- Light OJ1336 Sigma Function
- LightOJ 1336 Sigma Function
- LightOJ 1336 Sigma Function
- Sigma Function (因子和)
- Sigma Function(算数技巧)
- LightOj 1336(Sigma Function)
- LightOJ 1336 Sigma Function
- Sigma Function LightOJ
- Win10下Visual Studio 2015编译报“无法注册程序集***dll- 拒绝访问。请确保您正在以管理员身份运行应用程序。对注册表项”***“的访问被拒绝。”问题解决
- 虚拟币开发专题(自己动手制作山寨币教程)
- SEO关键词从商业角度看的选择策略
- i++和++i的区别
- LeetCode
- UVA 11395——Sigma Function
- 数据库SQL优化大总结之 百万级数据库优化方案
- SpringBoot中常用注解@ PathVaribale / @ RequestParam / @ GetMapping介绍 本篇博文将介绍几种如何处理URL中的参数的注解@ PathVariba
- Codeforces Round #394 (Div. 2) D. Dasha and Very Difficult Problem —— 贪心
- DispatchAction和ForwardAction的使用
- (转)布局文件中fill_parent和match_parent有什么区别?
- 左旋转字符串
- HTTPS的工作流程的理解
- Python--多线程编程--生产者消费者模型