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 ...
随机推荐
- 获取WebApplicationContext的几种方式
加载WebApplicationContext的方式 WebApplicationContext是ApplicationContext的子接口,纵观Spring框架的几种容器,BeanFactory作 ...
- PostGIS中dbf file (.dbf) can not be opened.shapefile import failed
postgis数据库文件shapefile导入 dbf file (.dbf) can not be opened.shapefile import failed. Destination: publ ...
- python六十九课——网络编程之TCP协议
1.1 概述: TCP协议通过三次握手协议将客户端与服务器端连接,两端使用各自的Socket对象.Socket对象中包含了IO流,供数据传输. 即:TCP协议在客户端与服务器端通过Socket组成了I ...
- UVA1618-Weak Key(RMQ)
Problem UVA1618-Weak Key Accept: 103 Submit: 588Time Limit: 3000 mSec Problem Description Cheolsoo ...
- 猜数字游戏,判断输入的数字与系统产生的数字是否一致(Math.random()与if嵌套循环)
package com.summer.cn; import java.util.Scanner; public class Test041509 { /** * java 随机数 Math * Mat ...
- Floyed
1.定义 可解任意两点间的最短路径 可判有向图或负权的最短路径问题,也可用于计算有向图的传递闭包 2.算法描述 简单点说,就是暴力遍历 时间复杂度O(n^3) 下面是简简单单的代码: #include ...
- linux日志:syslogd和klogd及syslog
一. 日志守护进程 syslogd和klogd是很有意思的守护进程,syslogd是一个分发器,它将接收到的所有日志按照/etc/syslog.conf的配置策略发送到这些日志应该去的地方,当然也包括 ...
- [SDOI2017]天才黑客[最短路、前缀优化建图]
题意 一个 \(n\) 点 \(m\) 边的有向图,还有一棵 \(k\) 个节点的 trie ,每条边上有一个字符串,可以用 trie 的根到某个节点的路径来表示.每经过一条边,当前携带的字符串就会变 ...
- 面试 12:玩转 Java 快速排序
终于轮到我们排序算法中的王牌登场了. 快速排序由于排序效率在同为 O(nlogn) 的几种排序方法中效率最高,因此经常被采用.再加上快速排序思想——分治法也确实非常实用,所以 在各大厂的面试习题中,快 ...
- Windows Community Toolkit 3.0 - UniformGrid
概述 UniformGrid 控件是一个响应式的布局控件,允许把 items 排列在一组均匀分布的行或列中,以填充整体的可用显示空间,形成均匀的多个网格.默认情况下,网格中的每个单元格大小相同. 这是 ...