Codevs3753磁阵突围题解

  • 题目描述 Description

    落冰从悬崖上被冲下,虽有落令的精魂保护大难不死,但已消耗了大半法力。此时的棂刚刚也连续经历了三场恶战,身负重伤。夜色中他们急于撤出迷雾丛林,途中却被拉尔法的磁阵困住。这个磁阵专门用来对付落冰,由于洛伦兹力的作用,为避免给自己造成伤害,落冰被迫把自身的电流降到接近0,也因此暂时失去了攻击能力。拉尔法得意地阴笑着,因为他看出了棂的重伤,并认为自己可以轻易战胜棂。

    然而,身经百战的棂早已看穿了一切,他知道拉尔法用大脑控制磁阵。棂和拉尔法之间的磁阵可以看作一个a行b列的矩阵。(他们都在矩阵的外面)棂可以在短时间内控制少量的γ光子,这些光子可以从某一列的任何一个格子出发,到达下一列的任何一个格子,(当然光子一开始从棂出发,可到达第1列的任何一个格子;也可以从第b列——即最后一列——的任何一个格子出发到达拉尔法)当光子到达拉尔法所在的位置时,虽然伤害可以忽略不计,但光子可以对拉尔法的大脑造成扰动(大脑的思考是在量子层面的嘛),然后磁阵强度就会有一定程度的削弱。并且光子到达拉尔法的不同路径数越多,对拉尔法造成的扰动就越大,磁阵削弱得也越厉害。

    这里一条路径指的是光子从棂出发经过b列之后到达了拉尔法所经过的路径。光子只能从某一列到下一列,不能返回到前面的列,也不能在同一列的两个格子运动。

    现在,棂想知道一共有多少种不同的路径,然后他就可以心算出光子对拉尔法造成的扰动和磁阵被削弱的程度,并挑选合适的符咒发动攻击。棂没带笔记本,因此他通过虚数空间把a和b的值告诉了梦中的晓筱。然而晓筱梦见了一个令人费解的数p,经过一番思索,她认为p也是棂告诉的,意思是把答案mod p,因为棂总是很关心她,不想麻烦她写高精。但晓筱参透了p的含义以后,剩余的脑细胞不足以计算出总路径数,于是她请精通OI的你来帮她。

  • 输入描述 Input Description

    只有一行,有3个整数a,b,p,含义同题目描述。

  • 输出描述 Output Description

    只有一个整数,为总路径数mod p以后的值。

  • 样例输入 Sample Input

    样例输入1:

    2 10 1000

    样例输入2:

    3 6 1000

  • 样例输出 Sample Output

    样例输出1:

    24

    样例输出2:

    729

  • 数据范围及提示 Data Size & Hint

    对于20%的数据,b≤105;

    对于40%的数据,b≤1050;

    对于100%的数据,a,p≤10000;b≤101000000;

    数据全部随机;

    (感觉这样的数据规模并不够大)

  • 题解

    一件事:找到一条路径;

    完成这件事可以分b步,其中每一步都有a种方案;

    根据分步乘法计数原理,总方案数=ab,本题就转化成了求abmodp了。

    套公式abmodp=a(bmodφ(p))+φ(p)modp,b≥φ(p),大整数的处理方式与fzu1759如出一辙,数据还弱不少,直接拿1759代码改一改就行了。

  • Code
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
#define ll long long
using namespace std;
char ch[1000010];
inline ll singleEulerPhi(ll a)
{
    ll ans = a;
    for(ll i = 2; i <= (ll)sqrt(a * 10); ++i) if(a % i == 0)
    {
        ans = ans / i * (i - 1);
        while(a % i == 0) a /= i;
    }
    if(a > 1) ans = ans / a * (a - 1);
    return ans;
}
inline ll quickPow(ll a, ll b, ll m)
{
    ll ans = 1;
    for(ll t = a; b; b >>= 1, t = (t % m) * (t % m) % m)
        if(b & 1) ans = (ans % m) * (t % m) % m;
    return ans;
}
inline void write(ll a)
{
    int top = 0;
    char ch[50];
    if(a < 0)
    {
        putchar(‘-‘);
        a = -a;
    }
    do {
        ch[top++] = a%10 + 48;
        a /= 10;
    } while(a);
    while(top--) putchar(ch[top]);
    putchar(‘\n‘);
}
int main()
{
    ll a, b, c, phi, len;
    scanf("%lld", &a); scanf("%s", &ch); scanf("%lld", &c);
    len = strlen(ch); phi = singleEulerPhi(c);
    b = 0LL;
    for(int i = 0; i < len; ++i)
    {
        b = b * 10 + ch[i] - 48;
        b %= phi;
    }
    write(quickPow(a, b, c));
    return 0;
}
时间: 2024-08-04 09:58:39

Codevs3753磁阵突围题解的相关文章

更换磁阵硬盘,数据库宕机

昨天ibm磁盘阵列更换一块损坏的硬盘(11号硬盘),厂家换上去的硬盘数据同步失败(12磁盘 ==>11磁盘),而且发现磁阵中的热备盘也无显示同步失败,几小时后连接存储的相关oracle数据库RAC1开始大量报错,节点2直接dg 不能mount挂掉了,rac1日志: Reread of rdba: 0x03801dbb (file xx, block xxxx) found same corrupted data--xx和xxxx每次报错不相同 重启rac2无法读取controlfile 文件.重

系统崩溃,大圣归来

走在程序员的路上,久了总会碰到一些系统崩溃的事件. 在 2011 年 8 月份某个阴雨连绵的周一,北弗吉尼亚一个 1000 万瓦特的变压器发生爆炸,在整个电网中带来了庞大的突增瞬间电压,对亚马逊位于弗吉尼亚州阿什伯恩(Ashburn)的一个数据中心造成了重创,导致这个数据中心的主电源关闭.亚马逊的杰出工程师詹姆斯·汉密尔顿(James Hamilton)当时正巧开车驶入该数据中心停车场,对于阿什伯恩数据中心来说,汉密尔顿在那个时刻到来是一个意外的惊喜,正当他们遭遇重创时有「大圣」经过帮助处理这些

oracle rac ha

ha,仅只是在操作系统层面进行数据库的监控和管理,一般只针对单实例数据库使用.优点是管理方便,应用开发方便(方便了开发商):工程投入较小.缺点是,具有所有单实例数据库的缺点:如:容错能力差,续航能力差,用户容量小等等问题.rac,数据库本身提供的一种单数据库多实例的应用方式,优点是:1.使用灵活,即可当作单机使用也可多机使用.2.提供了大用户量访问的一种解决方式,即多机并行运行共同承担数据库运行中消耗的内存.cpu等系统资源.3.容错能力较单机高,在主机类问题的容错上尤为显著.(磁阵问题不在此列

存储扫盲之多路径

一.多路径示意图 二.多路径解决的问题: 1.预防主机HBA卡故障 2.预防磁阵控制器故障 3.可以多条path一起使用提高磁阵的iops能力 三.linux对多路径的解决 linux靠下面三个东西解决: [[email protected] dev]# rpm -qa|grep mapperdevice-mapper-1.02.67-2.el5device-mapper-multipath-0.4.7-48.el5device-mapper-event-1.02.67-2.el5 配置文件:

飞行的架构师和奔跑的程序员

转:http://www.cnblogs.com/mindwind/p/5196310.html 飞行的架构师和奔跑的程序员 关于程序员和架构师的讨论很多,我想从不同的角度说下. 寻路 当我刚进入软件行业成为一名程序员时,我的理想就是成为一名架构师.架构师这个词的英文叫 Architect,原意是建筑师,因为软件行业参照借鉴了很多建筑行业的概念,所以就借用这个词.我是在学校读书时知道架构师这个名词的,当时很多软件方面的书都是翻译过来的,现在也不知道是谁最早把 Architect 翻译成架构师的了

InnoDB主要特性、概念和架构

Innodb的主要特性 DML操作遵循ACID模型,事务支持commit,rollback和crash recovery,从而保护用户数据 基于行锁以及类似oracle的一致性读,提升了多用户的并发和性能 基于主键对查询进行优化 为了维护数据的完整性,InnoDB也支持外键.如果使用了外键,insert,update以及delete操作都会得到检查,以确保不会导致多表之间的数据不一致. 可以将InnoDB的表和Mysql其它存储引擎的表混合使用,甚至在同一个sql语句当中.比如:可以使用join

VMware下CentOS6.5安装oracle11g RAC(2)

3 安装前检查与配置 关于本章 本节介绍安装Oracle11g R2前的相关准备和配置工作. 本章节所有操作,如无特别说明,均需要在两个主机上分别进行操作. 3.1 检查硬件环境 安装前需检查磁盘阵列.网络设备.主机内存及CPU的配置情况. 3.2 检查软件环境 本节介绍安装Oracle11g R2数据库软件环境要求. 3.3 配置RAC环境 安装Oracle数据库软件前需先配置RAC环境. 3.4 配置本地磁盘 安装Oracle数据库软件前需配置本地磁盘. 3.5 创建组和用户 本节介绍如何创

Centos 安装配置iscsi

在测试oracle rac的时候用iscsi来模拟磁阵的(真的磁阵需要多路径软件),简单的记录下 #scsi server yum install scsi-target-utils service tgtd start chkconfig tgtd on mkdir /srv/iscsi dd if=/dev/zero of=/srv/iscsi/disk01.img bs=1M count=200 #配置虚拟磁盘 vi /etc/tgt/targets.conf #backing-store

xtrabackup备份陷阱引起的一次严重业务故障

一.场景:早上7点被电话叫醒,说夜间有大量业务订单不成功,web server上报了很多sqlException,怀疑跟新部署的xtrabackup备份脚本有关.生产系统环境为redHat5.8,mysql版本为5.6,xtrabackup版本为2.2.10 二.分析过程: 1.上db一看,备份时间确实很异常,1点钟的crontab,运行到6:55才完成: innobackupex: Backup created in directory '/backup/inc_1'150825 06:55: