您的位置:首页 > 大数据 > 人工智能

2009 Multi-University Training Contest 1 题集(长期更新)

2016-05-27 00:49 609 查看
A题传送门:A sequence of numbers

题目大意:给数列的前三项,推出第n项的值;

题解:简单的求通项公式,不过注意题目数据比较大,而且在求等比数列的时候因为通项公式是

            an = a1*q^(n-1);所以直接用pow就会出错,需要用快速幂处理就没事了;

AC代码:

#include <bits/stdc++.h>
#define ll long long
#define mod 200907
using namespace std ;
ll quick(ll a , ll b , ll md)
{
ll res = 1 ;
a = a % md ;
while(b)
{
if(b%2) res = res * a % md ;
b/=2;
a = a * a % md ;
}
return res ;
}
int main()
{
ll a , b , c , solve;
ll q , d ,qqq;
int t ;
cin>>t;
while(t--)
{
cin>>a>>b>>c>>solve;
ll sum ;
if(b - a == c - b)
{
d = b - a ;
sum = a + (solve-1)*d;
cout<<sum%200907<<endl;
continue;
}
else if(b/a==c/b)
{
q = b/a;
qqq = quick(q,solve-1,mod);
sum = a*qqq;
cout<<sum%200907<<endl;
continue;
}
}
return 0 ;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: