基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题
 收藏
 关注
莫比乌斯函数,由德国数学家和天文学家莫比乌斯提出。梅滕斯(Mertens)首先使用μ(n)(miu(n))作为莫比乌斯函数的记号。(据说,高斯(Gauss)比莫比乌斯早三十年就曾考虑过这个函数)。

 
具体定义如下:
如果一个数包含平方因子,那么miu(n) = 0。例如:miu(4), miu(12), miu(18) = 0。
如果一个数不包含平方因子,并且有k个不同的质因子,那么miu(n) = (-1)^k。例如:miu(2), miu(3), miu(30) = -1,miu(1), miu(6), miu(10) = 1。
给出一个数n, 计算miu(n)。
Input
输入包括一个数n,(2 <= n <= 10^9)
Output
输出miu(n)。
Input示例
5
Output示例
-1

【分析】:

(1)如果这个数n能整除某个数的平方,那么函数值就为0;


(2)否则判断它的因子个数(k)的奇偶性,函数值为(-1)^k;


 【代码】:

#include<string.h>
#include<stdlib.h>
#include<queue>
#include<stack>
#include<math.h>
#include<vector>
#include<map>
#include<set>
#include<stdlib.h>
#include<cmath>
#include<string>
#include<algorithm>
#include<iostream>
#define exp 1e-10
#define MAX(a,b) ((a)>(b)?(a):(b))
using namespace std;
const int N = ;
const int M = ;
const int inf = ;
const int mod = ;
int fun(int n)
{
int cnt;
int sum=;
for(int i=;i*i<=n;i++)
{
cnt=;
if(n%i==)
{
sum++;//记录质因子个数
while(n%i==)//计算因子个数
{
n=n/i;
cnt++;
}
if(cnt>=)//若此因子出现次数大于等于两次,则因子必存在i的平方
return ;
}
} if(n!=)
sum++;
return (sum%)?-:;//如果因子个数为奇数则函数值为-1 ,如果因子个数为偶数则函数值为1
}
int main()
{
int n;
while(~scanf("%d",&n))
printf("%d\n",fun(n));
return ;
}

最新文章

  1. android 自定义控件——(三)水平线、虚线
  2. SSM环境搭建(接口编程方式)
  3. bzoj1799: [Ahoi2009]self 同类分布
  4. 【BZOJ】2956: 模积和
  5. 变量声明提升 Vs. 函数声明提升
  6. 20145338 《Java程序设计》第1周学习总结
  7. 【转】 linux 安装nginx及编译参数详解
  8. U盘安装Win7 64位
  9. 比较js中创建对象的几种方式
  10. ThinkPHP函数详解:F方法
  11. C++注释和doxygen注释
  12. QtSoap调用Web Service(QtSoap是非官方应用)
  13. oracle设备
  14. IDEA关掉重复代码波浪线
  15. 【python 3】 函数 初识
  16. react-native No bundle URL present
  17. 浅析 PHP 中的 Generator
  18. CentOS7配置FTP服务器增强版~(零基础学会FTP配置)
  19. MI200e电力线通讯
  20. MYSQL获取当前年、季、月、周第一天、最后一天的日期/时间戳

热门文章

  1. 【题解】NOIP2016换教室
  2. 【NOIP模拟赛】就 反悔贪心
  3. BZOJ 2500 幸福的道路(race) 树上直径+平衡树
  4. vue中使用 echarts3.0 或 echarts2.0 (模拟迁徙图,折线图)
  5. 门户系统整合sso cookie共享及显示用户信息
  6. Spring validation 后端校验【转】
  7. event loop 小记
  8. CSS学习之float解析
  9. Maven环境搭建、调试、打包
  10. Liberty中应用的contextroot