周賽 大數

問題 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;	
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章