您的位置:首页 > 其它

找规律,数学(巨大的斐波那契数列,uva 11582)

2016-09-26 23:44 411 查看
18446744073709551615=2^64-1是unsigned long long能表示的最大的数,输入输出用%llu或%I64u。

发现很多数学题都是要你找规律的,只不过要注意特殊数据。

#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ll;

vector<ll>f[1010];

void init()
{
for(ll i=2;i<=1000;i++)
{
f[i].push_back(0);
f[i].push_back(1);
for(ll j=2;;j++)
{
ll temp=(f[i][j-2]%i+f[i][j-1]%i)%i;
if(f[i][j-1]==0&&temp==1) break;
else f[i].push_back(temp);
}
}
}

ll a,b,n;

ll mypow(ll x,ll n,ll mod)
{
x%=mod;
ll ret=1;
while(n)
{
if(n&1) ret=(ret*x)%mod;
x=(x*x)%mod;
n>>=1;
}
return ret;
}

int main()
{
init();
ll t;
scanf("%I64u",&t);
while(t--)
{
scanf("%I64u %I64u %I64u",&a,&b,&n);
if(n==1)
{
puts("0");
continue;
}
ll num=mypow(a,b,ll(f
.size()-1));
printf("%I64u\n",f
[num]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: