码迷,mamicode.com
首页 > 其他好文 > 详细

0x03 递归

时间:2018-05-20 18:08:32      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:for   targe   type   opened   isp   ==   技术分享   ++   code   

这个东西好像在搞矩乘的时候用过?忘了

技术分享图片

技术分享图片
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
const int mod=9901;

int len;LL zy[110],cs[110];
void get_zy(LL n)
{
    len=0;
    for(LL i=2;i*i<=n;i++)
    {
        if(n%i==0)
        {
            len++;
            zy[len]=i;cs[len]=0;
            while(n%i==0)n/=i,cs[len]++;
        }
    }
    if(n>1) len++, zy[len]=n, cs[len]=1;
}

//---------------------------------

LL quick_power(LL n,int p)
{
    LL A=n%mod,ret=1;
    while(p>0)
    {
        if(p%2==1)ret=(ret*A)%mod;
        A=(A*A)%mod;p/=2;
    }
    return ret;
}
LL fenzi(LL n,int p)
{
    if(p==0)return 1;
    if(p%2==0)
    {
        return (( fenzi(n,p/2-1)*(1+quick_power(n,p/2)) )%mod+quick_power(n,p))%mod;
    }
    else
    {
        return ( fenzi(n,p/2)*(1+quick_power(n,p/2+1)) )%mod;
    }
}
int main()
{
    LL n;int p;
    while(scanf("%lld%d",&n,&p)!=EOF)
    {
        get_zy(n);
    
        LL ans=1;
        for(int i=1;i<=len;i++)
        {
            ans=(ans*fenzi(zy[i],cs[i]*p))%mod;
        }
        printf("%lld\n",ans);
    }
    return 0;
}
poj1845

3889那题太无聊了,题意还贼难理解,YY了下做法,就是很裸分治找在那个位置,维护横纵区间

手工栈太麻烦了,看这题吧bzoj2819Nim 但是好像机友们只传1个参数的搜索也可以

总的来讲没什么意思。

0x03 递归

标签:for   targe   type   opened   isp   ==   技术分享   ++   code   

原文地址:https://www.cnblogs.com/AKCqhzdy/p/9063644.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!