K-wyh的数列

链接:https://www.nowcoder.com/acm/contest/93/K
来源:牛客网

Problem  Description:

wyh学长特别喜欢斐波那契数列,F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n>=2)

一天他突发奇想,想求F(a^b)%c

Input:

输入第一行一个整数T(1<=T<=100),代表测试组数

接下来T行,每行三个数 a,b,c (a,b<=2^64) (1<c<1000)

Output:

输出第a^b项斐波那契数对c取余的结果

Sample  Input:

3
1 1 2
2 3 1000

32122142412412142 124124124412124 123

Sample  Output:

1
21

3

思路:n很小,斐波那契有循环节,求出循环节然后快速幂即可,2^64要注意用unsigned long long。

My  DaiMa:

#include<stdio.h>
#include<iostream>
using namespace std;
typedef unsigned long long ull;
const int maxn=1010;
ull F[maxn*maxn];
int powerMod(ull a,ull b,ull mod)
{
    int result=1;
    while(b)
    {
        if(b&1)
            result=(a*result)%mod;
        a=(a*a)%mod;
        b/=2;
    }
    return result;
}
int main()
{
    ull a,b,c,mod,t;
    cin>>t;
    while(t--)
    {
        cin>>a>>b>>c;
        F[0]=0;
        F[1]=1;
        for(int i=2;i<=c*c;i++)
        {
            F[i]=((F[i-1]%c)+F[i-2]%c)%c;
            if(F[i]==F[1]&&F[i-1]==F[0])
            {
                mod=i-1;
                break;
            }
        }
        if(a==0||c==1)
            printf("0\n");
        else
            cout<<F[powerMod(a%mod,b,mod)]<<endl;
    }
    return 0;
}

全部评论

相关推荐

01-17 11:57
已编辑
门头沟学院 前端工程师
点赞 评论 收藏
分享
行云流水1971:这份实习简历的优化建议: 结构清晰化:拆分 “校园经历”“实习经历” 板块(当前内容混杂),按 “实习→校园→技能” 逻辑排版,求职意向明确为具体岗位(如 “市场 / 运营实习生”)。 经历具象化:现有描述偏流程,需补充 “动作 + 数据”,比如校园活动 “负责宣传” 可加 “运营公众号发布 5 篇推文,阅读量超 2000+,带动 300 + 人参与”;实习内容补充 “协助完成 XX 任务,效率提升 X%”。 岗位匹配度:锚定目标岗位能力,比如申请运营岗,突出 “内容编辑、活动执行” 相关动作;申请市场岗,强化 “资源对接、数据统计” 细节。 信息精简:删减冗余表述(如重复的 “负责”),用短句分点,比如 “策划校园招聘会:联系 10 + 企业,组织 200 + 学生参与,到场率达 85%”。 技能落地:将 “Office、PS” 绑定经历,比如 “用 Excel 整理活动数据,输出 3 份分析表;用 PS 设计 2 张活动海报”,避免技能单独罗列。 优化后需强化 “经历 - 能力 - 岗位需求” 的关联,让实习 / 校园经历的价值更直观。 若需要进一步优化服务,私信
实习,投递多份简历没人回...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务