NOI2002robot
这题又是纯数论题……
独立数就是欧拉函数,政客和军人的含义已经说的很清楚了,学者是最多的……
首先,如果我们知道了政客和军人的答案,那就只要用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的更多相关文章
- HNOI2008Cards
看了一下polya和burnside定理,感觉还行(就是不会证……) 这题用的是burnside ans=在每个置换群下不动的方案数之和除以置换数 这题有个难点在取模 关于对p(p为素数)取模(涉及到 ...
随机推荐
- sqlsever2008及以上各个安装包的说明
LocalDB (SqlLocalDB)LocalDB 是 Express 的一种轻型版本,该版本具备所有可编程性功能,但在用户模式下运行,并且具有快速的零配置安装和必备组件要求较少的特点.如果您需要 ...
- thinkphp操作数据库
1.实现or操作: $where=array( 'city'=>array('like',array('%'.$_GET['city'].'%')); 'hangye'=>array('l ...
- SPI协议及其工作原理详解
一.概述. SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接在外围设备微控 ...
- 【转】#ifdef __cplusplus深度剖析
原文:http://bbs.ednchina.com/BLOG_ARTICLE_251752.HTM 时常在cpp的代码之中看到这样的代码: #ifdef __cplusplus extern ...
- 简单加密算法在C#中的实现
加密是指通过某种特殊的方法,更改已有信息的内容,是的未授权的用户即使得到了加密的信息,如果没有正确的解密算法,那么也无法得到信息的内容. 方法一: //须添加对System.Web的引用 using ...
- 解决未能从程序集xxx中加载类型System.ServiceModel.Activation.HttpModule的问题
在IIS中运行网站时,出现错误: 未能从程序集“System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c ...
- 移动端webapp开发必备知识
移动设备的用户越来越多,每天android手机的激活量都已经超过130万台,所以我们面向移动终端的WebAPP也开始跟进了.本文主要介绍webapp的开发与调试的相关知识和经验,以及给出几种可选的解决 ...
- HubbleDotNet开源全文搜索组件相关资源
系统简介 HubbleDotNet 是一个基于.net framework 的开源免费的全文搜索数据库组件.开源协议是 Apache 2.0.HubbleDotNet提供了基于SQL的全文检索接口,使 ...
- iOS 支付宝应用(备用参考2)
接入前期准备工作包括商户签约和密钥配置 步骤1: 启动IDE(如Xcode),把iOS包中的压缩文件中以下文件拷贝到项目文件夹下, 并导入到项目工程中. AlipaySDK.bundle Al ...
- 深层解析:构建facebook应用商店推荐引擎
Under the Hood: Building the App Center recommendation engine As more apps on Facebook Platform ha ...