Sigma Function
做完这道题,我明白了人生的一个巨大道理,那就是: 其他题研究两下,做出来几百行。数论码字前研究半天,做出来十几二十行。做完特别没有成就感。。。
首先说下这题题意:首先,定义一个函数f[n],即为他所有因子和,他自带一个叼叼的公式
,然后问对一个给定的n,从1到n,他们的f[n]中有几个是偶数。。。pi 是n的素数因子,ei 是对应素因子的个数。。
我当时的思路历程: 首先比较简单,如果这k个式子全是奇数,那么f[n]是奇数,只要出现一个偶数,那么结果便是偶数,所以答案应该非常接近n,n大小在1万亿,所以不可能是普通遍历。。同时偶数非常多,那么可以转换为求奇数个数。。。
对于所有的素数。。如果p为2,那么那个式子一定为奇数,所以假如某个数a 满足条件,那么多给他一个素因子2,他肯定也满足条件,无论多给几个,他都满足条件(当然,最后发现只需要多给一个) ,然后对于不是2的素数,可以发现当ei+1为奇数的时候,也就是pi这个素因子出现偶数次的时候,这一项也为奇数。那么可以想来对于某个数,他是平方得来的,那么他一定满足条件。。比如: 225。 225是的15的平方,虽然他的素因子3、5都不是2那么直接,但由于他是平方得来的,那么分解出来是 3*3*5*5,所以每一项都是奇数,所以225满足条件。基础知道了。现在拿一些数找找规律(虽然当时我是找到规律才明白的思路0.0),我当时列举了前一百个。。可以发现,1*1 2*2 3*3 4*4 5*5 。。。 都满足条件(这是必然的),那么再细化一下,对于3的次方倍来说: 9 27 81 。。 其中27因为素因子3出现次数为奇数次,不满足条件,舍去,剩下的9、81就可以看成是3的平方和9的平方。。对于每个数都是这个规律,也就是出现奇数次不满足条件。所以我们的第二个推论可以验证了这部分的数量。。同时,对于每个平方数 如 9 那么 18 也满足条件,但36虽然也满足条件,却不需要再在这个时候记入计算,因为36还等于6*6,也就是(2*3)*(2*3),所以,也可以看出规律,对于每个平方数的2倍也满足条件。。。那么,正是因为我们不去重复计算36,所以我们算出来的不会有重叠的。。
co=2*((int)sqrt(a)); 短短一句就可以解决。。。。(我当时想了半天,真正意义上的半天,从下午到深夜。。)
最最后,要解决的就是多算的。。。比如:n=100,那么10 * 10==100,我们不能再去算2*10*10,但相信前面一段出来,这个也就没什么难度了。。。
AC代码:
#include<stdio.h>
#include<math.h>
int fun(long long a)
{
int co=;
int s=(int )sqrt(a);
while(s>)
{
if((long long)s*s*>a) co++;
else break;
s--;
}
return co;
}
int main()
{
long long a;
int t,co=,g=;
scanf("%d",&t);
while(t--)
{
scanf("%lld",&a);
co=*((int)sqrt(a));
co-=fun(a);
printf("Case %d: %lld\n",g++,a-co);
}
return ;
}
哎,没怎么优化
Sigma Function的更多相关文章
- Uva 11395 Sigma Function (因子和)
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=109329#problem/C 题目在文末 题意:1~n (n:1~1012)中,因子 ...
- LightOJ1336 Sigma Function(约数和为偶数的个数)
Sigma Function Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Submit ...
- LightOJ 13361336 - Sigma Function (找规律 + 唯一分解定理)
http://lightoj.com/volume_showproblem.php?problem=1336 Sigma Function Time Limit:2000MS Memory L ...
- 【LightOJ1336】Sigma Function(数论)
[LightOJ1336]Sigma Function(数论) 题面 Vjudge 求和运算是一种有趣的操作,它来源于古希腊字母σ,现在我们来求一个数字的所有因子之和.例如σ(24)=1+2+3+4+ ...
- Sigma Function (平方数与平方数*2的约数和是奇数)
Sigma Function https://vjudge.net/contest/288520#problem/D Sigma function is an interesting function ...
- D - Sigma Function 1~n内有多少个约数和为偶数
/** 题目:D - Sigma Function 链接:https://vjudge.net/contest/154246#problem/D 题意:求1~n内约数和为偶数的数的个数. 思路:一个数 ...
- LightOJ1336 Sigma Function —— 质因子分解、约数和为偶数
题目链接:https://vjudge.net/problem/LightOJ-1336 1336 - Sigma Function PDF (English) Statistics Forum ...
- Sigma Function 数学 因子求和
Sigma function is an interesting function in Number Theory. It is denoted by the Greek letter Sigma ...
- Sigma Function (LightOJ - 1336)【简单数论】【算术基本定理】【思维】
Sigma Function (LightOJ - 1336)[简单数论][算术基本定理][思维] 标签: 入门讲座题解 数论 题目描述 Sigma function is an interestin ...
- LightOJ - 1336 - Sigma Function(质数分解)
链接: https://vjudge.net/problem/LightOJ-1336 题意: Sigma function is an interesting function in Number ...
随机推荐
- Ubuntu下导入PySpark到Shell和Pycharm中(未整理)
实习后面需要用到spark,虽然之前跟了edX的spark的课程以及用spark进行machine learning,但那个环境是官方已经搭建好的,但要在自己的系统里将PySpark导入shell(或 ...
- docker学习笔记(三)-通过network理解docker,在同一网桥里搭建docker容器
创建test1 test2 两个network namespace 两个network namespace没有被启动 启动了但是有没有与network关联 创建两个veth,用于关联两个network ...
- 开放标准-http://www.open-std.org/
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/qianguozheng/article/details/37654877 http://www.op ...
- 在Ubuntu18.04上使用Anaconda
启动Anaconda Navigator 图形化界面 $ source ~/anaconda3/bin/activate root $ anaconda-navigator 查看目前的conda版本: ...
- [Python] timeit测试代码运行效率
python中有两种方法判断一个数是不是偶数或者奇数: In [29]: 3&1 Out[29]: 1 In [30]: 3%2 Out[30]: 1 In [31]: 4&1 Out ...
- NodeJS的优缺点
我们知道NodeJS是2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装.Node.js对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好,解 ...
- 深度学习框架PyTorch一书的学习-第六章-实战指南
参考:https://github.com/chenyuntc/pytorch-book/tree/v1.0/chapter6-实战指南 希望大家直接到上面的网址去查看代码,下面是本人的笔记 将上面地 ...
- Linux 分卷压缩
例如,要将大文件夹 PYNQ 分卷压缩成 1G 的单元大小,如下命令(类似的可以指定 tar 的参数为 czf 而生产 .tar.gz 格式的压缩包:可以指定分卷大小例如 500M 等),压缩完成后, ...
- Linux—日志查看(测试人员)
备注:在筛选语句后面加“--col”可以高亮显示查询结果中的关键字 cd /home/admin/logs/服务器名 #进入日志目录(错误日志文件:common-error.log),路径因公司而定 ...
- 如何理解render: h => h(App)
学习vuejs的时候对这句代码不理解 new Vue({ el: '#app', router, store, i18n, render: h => h(App) }) 查找了有关资料,以下为结 ...