3030年,Macsy正在火星部署一批机器人。
第1秒,他把机器人1号运到了火星,机器人1号可以制造其他的机器人。
第2秒,机器人1号造出了第一个机器人——机器人2号。
第3秒,机器人1号造出了另一个机器人——机器人3号。
之后每一秒,机器人1号都可以造出一个新的机器人。第m秒造出的机器人编号为m。我们可以称它为机器人m号,或者m号机器人。

机器人造出来后,马上开始工作。m号机器人,每m秒会休息一次。比如3号机器人,会在第6,9,12,……秒休息,而其它时间都在工作。
机器人休息时,它的记忆将会被移植到当时出生的机器人的脑中。比如6号机器人出生时,2,3号机器人正在休息,因此,6号机器人会收到第2,3号机器人的记忆副本。我们称第2,3号机器人是6号机器人的老师。
如果两个机器人没有师徒关系,且没有共同的老师,则称这两个机器人的知识是互相独立的。注意:1号机器人与其他所有机器人的知识独立(因为只有1号才会造机器人),它也不是任何机器人的老师。

一个机器人的独立数,是指所有编号比它小且与它知识互相独立的机器人的个数。比如1号机器人的独立数为0,2号机器人的独立数为1(1号机器人与它知识互相独立),6号机器人的独立数为2(1,5号机器人与它知识互相独立,2,3号机器人都是它的老师,而4号机器人与它有共同的老师——2号机器人)。
新造出来的机器人有3种不同的职业。对于编号为m的机器人,如果能把m分解成偶数个不同奇素数的积,则它是政客,例如编号15;否则,如果m本身就是奇素数或者能把m分解成奇数个不同奇素数的积,则它是军人,例如编号 3, 编号165。其它编号的机器人都是学者,例如编号2, 编号6, 编号9。

第m秒诞生的机器人m号,想知道它和它的老师中,所有政客的独立数之和,所有军人的独立数之和,以及所有学者的独立数之和。可机器人m号忙于工作没时间计算,你能够帮助它吗?
为了方便你的计算,Macsy已经帮你做了m的素因子分解。为了输出方便,只要求输出总和除以10000的余数。

可以看出独立数就是欧拉函数值;

设f[i][j]表示前i个约数中选j个约数的欧拉函数值;

由于欧拉函数的是积性函数;

f[i][j]=f[i-1][j]+f[i-1][j-1]*(p[i]-1);相当于f[i][j]既可以由不选i得到,又可以从一定选i得到;

然后j%2=1的f[k][j]加起来得到了军人的,j%2==0的f[k][j]加起来得到了政客的;

欧拉函数有一个性质,m的约数的欧拉函数和是m;

然后m-ans1-ans2-1,得到了学者的;

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<string>
  5. #include<cstdlib>
  6. #include<ctime>
  7. #include<vector>
  8. #include<algorithm>
  9. #include<queue>
  10. #include<map>
  11. using namespace std;
  12. #define LL long long
  13. const int mod=;
  14. int k;
  15. int c[][],f[];
  16. int mi(int a,int b){
  17. int ans=;
  18. while(b){
  19. if(b%)ans=(ans*a)%mod;
  20. b/=;
  21. a=(a*a)%mod;
  22. }
  23. return ans;
  24. }
  25. void init(){
  26. scanf("%d",&k);
  27. for(int i=;i<=k;i++)scanf("%d%d",&c[i][],&c[i][]);
  28. }
  29. void work(){
  30. int ans1=,ans2=,ans=,g;
  31. if(c[][]==)g=;
  32. else g=;
  33. f[]=;
  34. for(int i=g;i<=k;i++)
  35. for(int j=i-g+;j>=;j--)
  36. f[j]=(f[j]+f[j-]*(c[i][]-))%mod;
  37. for(int i=;i<=k-g+;i++){
  38. if(i%)ans1=(ans1+f[i])%mod;
  39. else ans2=(ans2+f[i])%mod;
  40. }
  41. for(int i=;i<=k;i++)ans=(ans*mi(c[i][],c[i][]))%mod;
  42. ans=(ans+-ans1-ans2-)%mod;
  43. printf("%d\n%d\n%d\n",ans2,ans1,ans);
  44. return;
  45. }
  46. int main(){
  47. freopen("1.in","r",stdin);
  48. freopen("1.out","w",stdout);
  49. init();
  50. work();
  51. return ;
  52. }

[noi2002]M号机器人的更多相关文章

  1. JZYZOJ1378 [noi2002]M号机器人 欧拉函数

    http://172.20.6.3/Problem_Show.asp?id=1378日常懒得看题目怪不得语文差,要好好读题目了,欧拉函数大概是数论里最友好的了,不用解方程不用转换过来转换过去只需要简单 ...

  2. 【机器人M号】题解

    题目 题目描述 3030年,Macsy正在火星部署一批机器人. 第1秒,他把机器人1号运到了火星,机器人1号可以制造其他的机器人. 第2秒,机器人1号造出了第一个机器人--机器人2号. 第3秒,机器人 ...

  3. BZOJ 1408: [Noi2002]Robot

    1408: [Noi2002]Robot Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 510  Solved: 344[Submit][Status][ ...

  4. 【BZOJ1408】[Noi2002]Robot DP+数学

    [BZOJ1408][Noi2002]Robot Description Input Output Sample Input 3 2 1 3 2 5 1 Sample Output 8 6 75 HI ...

  5. 【BZOJ】【3205】【APIO2013】机器人robot

    斯坦纳树 好神啊……Orz zyf && PoPoQQQ 为啥跟斯坦纳树扯上关系了?我想是因为每个点(robot)都沿着树边汇到根的时候就全部合起来了吧= =这个好像和裸的斯坦纳树不太 ...

  6. weiphp 微信公众号用程序来设置指定内容消息回复业务逻辑操作

    微信公众号机器人回复设置 在公众号插件里面的Robot- Model- weixinAddonModel.php里面的 reply设置 reply($dataArr,$keywordArr) 解析方法 ...

  7. BZOJ_1408_[Noi2002]Robot_数学

    Description Input Output Sample Input 3 2 1 3 2 5 1 Sample Output 8 6 75 HINT 90号机器人有10个老师,加上它自己共11个 ...

  8. [APIO2013]机器人(斯坦纳树)

    题目描述 VRI(Voltron 机器人学会)的工程师建造了 n 个机器人.任意两个兼容的机 器人站在同一个格子时可以合并为一个复合机器人. 我们把机器人用 1 至 n 编号(n ≤ 9).如果两个机 ...

  9. hihocoder #1170 机器人 &amp;&amp; 编程之美2015复赛

    题意: 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描写叙述 小冰的N个机器人兄弟排成一列,每一个机器人有一个颜色. 如今小冰想让同一颜色的机器人聚在一起.即随意两个同颜色的 ...

随机推荐

  1. (3)unity3d 地形

    在Hierarchy(层次) 建一个Terrain(地形) Terrain属性按钮 第一个按钮:抬升与下陷地面.单击抬升地形,同时按住shift下陷地形 第二个按钮:绘制高度.同时按住shift绘制等 ...

  2. Spring Tool Suite(STS)安装

    Spring Tool Suite是一个基于Eclipse的开发环境,可以自定义用于开发Spring应用程序.它提供了一个随时可用的环境来实现,调试,运行和部署Spring应用程序,包括Pivotal ...

  3. java并发之hashmap源码

    在上篇博客中分析了hashmap的用法,详情查看java并发之hashmap 本篇博客重点分析下hashmap的源码(基于JDK1.8) 一.成员变量 HashMap有以下主要的成员变量 /** * ...

  4. spring mvc 编写处理带参数的Controller

    在上一随笔记录的基础上,现记录编写处理带有参数的Controller. @Controller //这个注解会告知<context:component:scan> 将HomeControl ...

  5. CODECHEF Nov. Challenge 2014 Chef & Churu

    @(XSY)[分塊] Hint: 題目原文是英文的, 寫得很難看, 因此翻譯為中文. Input Format First Line is the size of the array i.e. \(N ...

  6. 手机微硬盘读取速度>50MB/s eMMC技术浅析

    转载:http://mobile.zol.com.cn/296/2968659_all.html#p2968659 手机微硬盘读取速度>50MB/s 在开始今天的话题之前,请大家随笔者一起时光倒 ...

  7. Direct2D教程(九)渲染位图

    概述 这篇的标题更确切的说应该叫位图画刷,这样才好和前几篇对应起来.在Direct2D中,位图的渲染也是通过画刷来实现的. Direct2D中并没有直接操作位图的接口,而是借助WIC(Windows ...

  8. C#使用CurrentUICulture切换语言

    1. 创建2个窗口   2. 窗口1属性Localizable设置为True,Language选择英语(美国) 然后把窗口1中控件的Text由中文编辑成英文,Form2一样设置.   此时,Form1 ...

  9. Kermit,Xmodem,1K-Xmodem,Ymodem,Zmodem传输协议小结

    来自:http://blog.163.com/czblaze_3333/blog/static/208996228201272295236713/ Kermit协议 报文格式: 1.       MA ...

  10. 【Nginx】事件驱动框架和异步处理

    Nginx对请求的处理是通过事件触发的,模块作为事件消费者,仅仅能被事件收集.分发器调用.这与传统的Webserver是不同的. 传统的Webserver下,一个请求由一个进程消费.请求在建立连接后将 ...