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 ...
随机推荐
- CentOS TinyProxy http(s)上网代理及置代理上网的方法
http://blog.csdn.net/fwj380891124/article/details/42168683 http://computer.uoh.edu.cn/linux/2159.htm ...
- 设计模式のAbstractFactory(虚拟工厂)----创建模式
一.产生背景 抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂.该超级工厂又称为其他工厂的工厂.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最 ...
- Alex网络
alexNet共有八层网络卷积层1:输入224*224*3 卷积核11*11*3*96 步长为4 然后是ReLU.局部归一化.3*3步长为2的最大值池化卷积层2:输入为28*28*96 卷积核5*5* ...
- python之常用模块(续)
time模块 random模块 sys模块 os模块 序列化模块 time模块 有三种方式表示 在Python中,通常有三种方式来表示时间:时间戳.元组(struct_time).格式化的时间字符串 ...
- [Windows]查看运行进程的参数【wmic】
参考 https://www.cnblogs.com/top5/p/3143827.html 和 https://blog.csdn.net/swazer_z/article/details ...
- 【转】iOS弹幕库OCBarrage-如何hold住每秒5000条巨量弹幕
最近公司做新需求, 原来用的老弹幕库, 已经无法满足需要. 迫不得已自己写了一套弹幕库OCBarrage. 这套弹幕库轻量, 可拓展, 高度自定义, 超高性能, 简单易上手. 无论哪家公司软件的性能绝 ...
- 【vue】vue中引入jquery
简洁版: 第一步:首先在package.json中输入"jquery":"^3.2.1",其中“3.2.1”为jquery版本号,按需修改 注:package. ...
- 一.html介绍
一.html1.就是一个文本文档,写标记语言,由浏览器软件进行渲染得到想要的网页效果2.版本:h4,h5 二.常用的h5标签1.块状标签: p:段落 div:块 span:同行块 h1-h6:6级标题 ...
- Redis入门篇(安装与启动)
一.Redis介绍 Redis是NoSql的一种,在弄清楚Redis是个什么玩意之前,先了解下NoSql是什么.1.什么是NoSql NoSql,全名:Not Only Sql,是一种非关系型数据库, ...
- PostgreSQL安装和使用
青岛OJ系统用的关系型数据库是PostgreSQL,为此对PostgreSQL大致了解下. 今天的主要话题围绕下面两个方面: PostgreSQL安装 PostgreSQL使用 一.PostgreSQ ...