这题又是纯数论题……

独立数就是欧拉函数,政客和军人的含义已经说的很清楚了,学者是最多的……

首先,如果我们知道了政客和军人的答案,那就只要用n的所有因子的欧拉函数值减去这两个值,然后取模就行了。

但一个数的因子有很多,而且题目中给的数据范围又颇大,所以我们想肯定有什么方法可以快速推出一个数的所有因子的欧拉函数值之和。

经过思考,我们有如下结论:

因为对于一个素数来说,phi(p的n次方)=p的(n-1)次方*(p-1)

这是因为这些式子拆开之后每一项都对应着一个因子的欧拉函数值,不重不漏。

接下来考虑,如何计算政客和军人

其实我在数学竞赛书上看过这一题……(给定一个集合及其中的所有元素,求它的所有奇子集的元素乘积之和和偶子集的元素乘积之和……)

其实这和上面的方法类似

设偶子集之和为A,奇子集之和为B。

(在此题中认为1既不是政客也不是军人)

S1=(1+X1)*(1+X2)*(1+X3)……(1+Xn)-1

展开之后每一项都对应一个子集乘积,所以A+B=S1

S2=(1-X1)*(1-X2)*(1-X3)……(1-Xn)-1

展开之后奇子集乘积符号为负,偶子集符号为正。所以A-B=S2

所以A=(S1+S2)除以2

B=S1-A

但需要注意的是,因为要对答案取模,所在计算过程中直接mod10000是不够的,因为涉及了除法。所以要多保留一位,在计算过程中mod100000,最后输出mod10000

至此,此题完美解决。

代码:(在wikioi上AC,在bzoj上WA,奇了怪了……)‘

 var ans1,ans2,ans3,p,e,n,t:int64;
i:longint;
function mo(x:int64):longint;
begin
mo:=((x mod )+) mod ;
end;
function power(num,times:longint):longint;
var tmp:longint;
begin
if times= then exit(mo(num));
tmp:=power(num,times>>);
power:=mo(tmp*tmp);
if times and = then power:=mo(power*num);
end;
procedure main;
begin
readln(n);
ans1:=;ans2:=;ans3:=;
for i:= to n do
begin
readln(p,e);
ans3:=mo(ans3*power(p,e));
if p= then continue;
ans1:=mo(ans1*(+p-));
ans2:=mo(ans2*(-p+));
end;
if n= then
begin
ans1:=;
if p<> then ans2:=p- else ans2:=;
ans3:=mo(ans3--ans1-ans2);
exit;
end;
ans1:=mo(ans1-);ans2:=mo(ans2-);ans3:=mo(ans3-);
t:=ans1;ans1:=mo(ans1+ans2)>>;ans2:=mo(t-ans1);ans3:=mo(ans3-ans1-ans2);
end;
procedure print;
begin
writeln(ans1 mod );
writeln(ans2 mod );
writeln(ans3 mod );
end;
begin
main;
print;
end.

NOI2002robot的更多相关文章

  1. HNOI2008Cards

    看了一下polya和burnside定理,感觉还行(就是不会证……) 这题用的是burnside ans=在每个置换群下不动的方案数之和除以置换数 这题有个难点在取模 关于对p(p为素数)取模(涉及到 ...

随机推荐

  1. 从零学起PHP

    数据库连接conn.php <?php //第一步:链接数据库 $conn=@mysql_connect("localhost:3306","root", ...

  2. 怎样下载安装Firebug和使用Firebug

    Firebug是基于火狐(FireFox)浏览器的一个插件,它的作用是给Web页面开发者一个很好的测试前端页面代码的工具.所以深受网页开发者或网页布局爱好者的喜爱.像我们用DIV+CSS和html所写 ...

  3. 删除_desktop.ini病毒文件

    del h:\_desktop.ini /f/s/q/a/f 强制删除只读文件/s 从当前目录及其所有子目录栓出指定文件.显示正在删除的文件名/q 制定清音状态.不提示确认删除/a 按照属性来删除

  4. Speech Patterns (string)

    People often have a preference among synonyms of the same word. For example, some may prefer "t ...

  5. linux eval命令

    eval 功能说明:重新运算求出参数的内容.语 法:eval [参数]补充说明:eval可读取一连串的参数,然后再依参数本身的特性来执行.参 数:参数不限数目,彼此之间用分号分开. 1.eval命令将 ...

  6. Foreign Exchange

     10763 Foreign ExchangeYour non-profit organization (iCORE - international Confederation of Revolver ...

  7. dom树的介绍,及原理分析

    三.解析和DOM树的构建 1.解析: 由于解析渲染引擎是一个非常重要的过程,我们将会一步步的深入,现在让我们来介绍解析. 解析一个文档,意味着把它转换为一个有意义的结构——代码可以了解和使用的东西,解 ...

  8. 微软职位内部推荐-Senior SDE for Cloud Platform

    微软近期Open的职位: Microsoft Launched the public cloud service-Azure in China on May 2013, Cosmos is the k ...

  9. VS2010界面主题更换全过程

    VisualStudio 2010的界面默认是蓝色的,背景是白色,字体是宋体,这些设置习惯了还好,但是可能看多了不怎么舒服.而且如果以前是用VS 6.0的知道,它使用的字体更为舒服清晰.所以,可以对V ...

  10. DevExpress GridControl 导出为Excel

    private void btnExport_ItemClick(object sender, EventArgs e)         {             SaveFileDialog sa ...