HDU 2855解题报告

来源:互联网 发布:淘宝收不到自己的店铺 编辑:程序博客网 时间:2024/06/06 16:38

Fibonacci Check-up

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1198    Accepted Submission(s): 675


Problem Description
Every ALPC has his own alpc-number just like alpc12, alpc55, alpc62 etc.
As more and more fresh man join us. How to number them? And how to avoid their alpc-number conflicted? 
Of course, we can number them one by one, but that’s too bored! So ALPCs use another method called Fibonacci Check-up in spite of collision. 

First you should multiply all digit of your studying number to get a number n (maybe huge).
Then use Fibonacci Check-up!
Fibonacci sequence is well-known to everyone. People define Fibonacci sequence as follows: F(0) = 0, F(1) = 1. F(n) = F(n-1) + F(n-2), n>=2. It’s easy for us to calculate F(n) mod m. 
But in this method we make the problem has more challenge. We calculate the formula , is the combination number. The answer mod m (the total number of alpc team members) is just your alpc-number.
 

Input
First line is the testcase T.
Following T lines, each line is two integers n, m ( 0<= n <= 10^9, 1 <= m <= 30000 )
 

Output
Output the alpc-number.
 

Sample Input
21 300002 30000
 

Sample Output
13
 

Source
2009 Multi-University Training Contest 5 - Host by NUDT
 

Recommend
gaojie   |   We have carefully selected several similar problems for you:  2254 2971 2294 3117 2256 
 

     

        参考代码:

     

#include<cstdio>#include<iostream>#include<cmath>#include<cstring>#include<algorithm>#include<string>#include<vector>#include<map>#include<set>#include<stack>#include<queue>#include<ctime>#include<cstdlib>#include<iomanip>#include<utility>#define pb push_back#define mp make_pair#define CLR(x) memset(x,0,sizeof(x))#define _CLR(x) memset(x,-1,sizeof(x))#define REP(i,n) for(int i=0;i<n;i++)#define Debug(x) cout<<#x<<"="<<x<<" "<<endl#define REP(i,l,r) for(int i=l;i<=r;i++)#define rep(i,l,r) for(int i=l;i<r;i++)#define RREP(i,l,r) for(int i=l;i>=r;i--)#define rrep(i,l,r) for(int i=1;i>r;i--)#define read(x) scanf("%d",&x)#define put(x) printf("%d\n",x)#define ll long long#define lson l,m,rt<<1#define rson m+1,r,rt<<11using namespace std;int t,n,m;struct mat{    int d[2][2];}A,B,E;mat multi(mat a,mat b){    mat ans;    rep(i,0,2)    {        rep(j,0,2)        {            ans.d[i][j]=0;            rep(k,0,2)                ans.d[i][j]+=a.d[i][k]*b.d[k][j];            ans.d[i][j]%=m;        }    }    return ans;}mat quickmulti(mat a,int n){    if(n==0) return E;    if(n==1) return a;    mat ans=E;    while(n)    {        if(n&1)        {            n--;            ans=multi(ans,a);        }        else        {            n>>=1;            a=multi(a,a);        }    }    return ans;}int main(){   read(t);   E.d[0][0]=E.d[1][1]=1;E.d[0][1]=E.d[1][0]=0;   while(t--)   {       read(n);read(m);       A.d[0][0]=2;A.d[0][1]=A.d[1][0]=A.d[1][1]=1;       B.d[0][0]=1,B.d[0][1]=B.d[1][0]=B.d[1][1]=0;       mat ans=quickmulti(A,n);       ans=multi(ans,B);       printf("%d\n",ans.d[1][0]);   }}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 身份证过期了怎么办护照 驾照体检表丢了怎么办 驾照体检表掉了怎么办 驾校体检表掉了怎么办 身份证掉了怎么办护照 驾照体检表过期了怎么办 助力车行驶证过期怎么办 c1证骑摩托车怎么办 别人知道驾驶证号码怎么办 摩托车卖了车牌怎么办 违章超过12分怎么办 违章扣分24分怎么办 驾驶证有效期过了怎么办 驾驶证到期没审怎么办 驾驶证扣不了分怎么办 集体户口怎么办户口本公证 强制保险单丢了怎么办 车子保险单丢了怎么办 汽车保险单子丢了怎么办 汽车保险贴丢了怎么办 保险本子丢了怎么办 平安保险单丢了怎么办 人寿保险单丢了怎么办 个人保险单丢了怎么办 学生保险单丢了怎么办 车保险单丢了怎么办 小孩保险单丢了怎么办 江苏省河道疏浚证怎么办 友利银行怎么办卡 专票信息没固话怎么办 廊坊市交警队放车后乱收费怎么办 驾驶本到期了怎么办 出国读研档案怎么办 出国留学 报到证怎么办 驾驶证扣分超证怎么办 车子违章132分怎么办 人才档案丢了怎么办 营运证过期三年怎么办 营运证年审过期怎么办 动态磅显示超载怎么办 货车道路运输证怎么办