ZUFE2480: 神奇的序列
来源:互联网 发布:网络课程网站 编辑:程序博客网 时间:2024/06/05 15:14
2480: 神奇的序列
时间限制: 4 Sec 内存限制: 256 MB提交: 31 解决: 15
[提交][状态][讨论版]
题目描述
序列a如下:
a[0] = A;
a[1] = B;
a[i] = a[pp] * a[qq]; ( i>=2,pp = 向下取整(i/k1),qq = 向下取整(i/k2) )
有Q次询问,每次询问输入pos,请输出a[pos]%mod。
输入
第一行输入五个整数A,B,k1,k2,mod。
第二行输入一个整数Q。
接下来Q行每行输入一个整数pos。
1<=A<=100
1<=B<=100
2<=k1,k2<=1e14
1<=mod<=1e9+7
1<=Q<=100000
1<=pos<=1e14
输出
输出Q行,每行表示a[pos]%mod。
样例输入
45 87 2 5 100000000711012345678910
样例输出
4587391539151761753406053406053406051532722515327225333468568
提示
来源
周甄陶
———————————————————————————————————
思路:记忆化搜索
#include <iostream>#include <cstdio>#include <cmath>#include <map>#include <set>using namespace std;#define LL long long LL a,b,k1,k2,mod;map<LL,LL>mp;set<LL>s; LL f(LL n){ if(s.count(n)==1) return mp[n]; if(n==0) { mp[0]=a; return a; } if(n==1) { mp[1]=b; return b; } LL x=f(n/k1)*f(n/k2)%mod; if(s.count(x)==0) { mp[n]=x; s.insert(n); } return x;} int main(){ int q; LL n; while(~scanf("%lld%lld%lld%lld%lld",&a,&b,&k1,&k2,&mod)) { mp.clear(), s.clear(); scanf("%d",&q); while(q--) { scanf("%lld",&n); LL ans=f(n); printf("%lld\n",ans); } } return 0;}
0 0
- ZUFE2480: 神奇的序列
- 1007神奇的序列
- WUSTOJ 1961 神奇的序列
- qwb与神奇的序列
- 神奇的序列 HNUST 1883
- JAVA自定义序列化的神奇方法
- zufe 神奇的序列计算 (树状数组)
- 晋城一中oj 神奇的序列
- Problem D: qwb与神奇的序列
- jzoj5272 神奇的重复序列 (寻找性质)
- JZOJ5272. 神奇的重复序列 结论
- 【JZOJ 5272】神奇的重复序列
- 【JZOJ 5272】 神奇的重复序列
- bzoj1006 神奇的国度【完美消除序列】
- [完美消除序列]BZOJ1006: [HNOI2008]神奇的国度
- [BZOJ1006][[HNOI2008]神奇的国度][MCS,完美消除序列]
- ZUFE 2480 神奇的序列【记忆化搜索】
- ZJCOJ:qwb与神奇的序列(数论)
- 天气接口页面查询demo
- 如何寻找最新版本的Oracle Database独立安装包
- 关于json、jsonp
- oracle 服务器发送邮件
- Fragment 全解析(1):那些年踩过的坑
- ZUFE2480: 神奇的序列
- jfreechart 的使用
- js物体运动-图标向上运动再从下方出现运动到原位置
- 在XE7下引用ToolsApi后编译不通过,显示缺少DockForm, DesignIntf
- ViewPager网络加载图片并无限轮播实现
- 汇编程序:双字运算
- Python 3.6.1中的异常处理
- 启动/关闭oracle服务有三种方式
- 10句洗脑屁话