【数论】MMT数解题报告
来源:互联网 发布:九月份非农数据 编辑:程序博客网 时间:2024/05/17 23:27
2、MMT数
FF博士最近在研究MMT数(莫明堂数-_-)。
如果对于一个数n,存在gcd(n,x)<>1并且n mod x<>0 那么x叫做n的MMT数
显然这样的数可以有无限个。
FF博士现在想知道在所有小于n的正整数里面有多少个n的MMT数
输入样例:
10
输出样例:
3
样例解释: 3个数分别是 4 6 8
gcd(n,x)的意思是求n和x的最大公约数
对于50%的数据 n<=1000000
对于100%的数据n<=maxlongint
【考察点】
数论,准确地说,欧拉函数
【思路】
反正我考试的时候是没有办法的……朴素了50分。
看完解题报告后,我还是推不出那个破公式,于是只能直接用结论了……
(以下复制)
这道题定位为纯数论题..因为实在不知道该怎么藏算法。
假设一个数n分解质因数以后为p1^k1*p2^k2*p3^k3……(p为质因数)
那么他的因数个数为a=(k1+1)*(k2+1)*(k3+1)…
在所有比n小的数里与n互质的数的个数其实就是欧拉函数,b=n*[1-(1/p1)]*[1-(1/p2)]*[1-(1/p3)]
这两种数里都含有1,所以n的MMT数为n-(a+b-1)。
纯模拟也可以有50分。
至于怎么分解质因数就不用说了吧,算素数或者打素数表都可以。
>_<不会欧拉函数的童鞋就当学了个新知识吧,也许以后会有用哦。
【提交情况】
考试TLE50,下来搞了很久之后AC
【经验及收货】
素数这种东西果然还是打表让人舒服些……
【吐槽】
该死的数论……给各种数学牛跪了……给能手动推出欧拉函数的跪了……
ACCode:
Program mmt;Var a,b,c:array[0..10000]of longint;f:array[0..10000]of boolean;n:longint;Procedure terminate;beginclose(input);close(output);halt;end;Procedure init;beginassign(input,'mmt.in');assign(output,'mmt.out');reset(input);rewrite(output);readln(n);end;Procedure main;vari,j,k,m,x,y,t,tot,z,h,tt:longint;s:real;flag:boolean;beginm:=n;h:=0;t:=0;for j:=2 to trunc(sqrt(maxlongint)) dobeginflag:=true;for i:=2 to trunc(sqrt(j)) doif j mod i=0 then begin flag:=false;break;end;if flag then begin inc(t);a[t]:=j;end;end;for i:=1 to t dowhile n mod a[i]=0 dobegin inc(c[i]);n:=n div a[i];end;if n<>1 then begin a[t+1]:=n;c[t+1]:=1;inc(t);end;tt:=1; n:=m;for i:=1 to t do tt:=tt*(c[i]+1);s:=m;for i:=1 to t dobeginif c[i]=0 then continue;s:=s-s/a[i];end;s:=round(s);writeln(n-(tt+s-1):0:0);end;Begininit;main;terminate;End.
- 【数论】MMT数解题报告
- 【数论】MMT数
- 巴蜀2904 MMT数
- 巴蜀 2904 MMT数
- [tyvj1346] MMT数
- Spoj数论专场解题报告
- 数论小模版解题报告
- 数论基础训练(2)-解题报告
- 解题报告:HDU_3944 DP? 数论
- POJ-1730 Perfect Pth Powers 解题报告(数论) 最大开方数
- 一中OJ #3167 排列组合数计算[2] | 高级数论 组合计数 | 解题报告
- 一中OJ #1176 立方数分解[尼科梅彻斯定理] | 数论 + 枚举 | 解题报告
- 【SHLQSH数】解题报告
- 单词数解题报告
- POJ 1006(数论:同余式) 解题报告
- A.yuna学数论(解题报告)
- poj2635The Embarrassed Cryptographer(数论)(解题报告)
- 数论基础练习赛-解题报告
- poj1273-----最大流基础(最简单的最大流!--模板题)
- 2013 google校园招聘笔试题
- 转载数据结构之kmp模式匹配
- WinForm开发 DataGridView控件的各种操作总结(一、单元格内容的操作)
- SSH整合+Extjs模拟上传图片并实现预览
- 【数论】MMT数解题报告
- 子函数中设置校验方式mark,space
- ORACLE异常记录
- 深入java虚拟机笔记
- 【字符串】漏洞和补丁解题报告
- 两段有序数组原地归并
- 一个人与一句话
- 异步通知《来自Linux驱动程序开发实例》
- STL之迭代器事例三