問題 D: CZY追女孩
題目描述
CZY遇到了一個萌妹子,他使出渾身解數想要博得她的好感,但是妹子居然是個數學學霸!一天,那個女孩在解數列問題時遇到了一點麻煩,她有數列的前3項,數列不是等比數列就是等差數列,她很想知道這個數列的第n項是什麼,但是n可能很大,她算不出來,CZY很想幫她,可是CZY是個學渣,於是想請聰明的你來幫忙求出數列的第n項,由於數據可能太大了,最後的結果對200907取餘就好
輸入
輸入包含多組測試數據,每組測試數據包含4個整數,前三個整數是數列的前三項,最後一個數是n,四個數的範圍都是1~10^9
輸出
輸出這個數列的第n項%200907
樣例輸入
1 2 3 5 1 2 4 5
樣例輸出
5 16
//用了同餘定理解得,參考代碼如下:
#include<stdio.h>
int main()
{ int i,k,a,b,c,n;
int sum;
while(scanf("%d%d%d%d",&a,&b,&c,&n)!=EOF)
{
if(a==b&&a==c&&c==0)
printf("0\n");
if(2*b==a+c){
int d;
d=b-a;
for(i=1;i<=n;i++){
if(i==1)
sum=a%200907;
else
sum=(sum+d%200907)%200907;}
printf("%d\n",int(sum));}
if(b*b==a*c) {
k=b/a;
for(i=1;i<=n;i++) {
if(i==1)
sum=a%200970;
else
{
sum=(sum*(k%200907))%200907;
printf("%d\n",sum);
}
}
return 0;
}