1. 程式人生 > >2016藍橋杯假期任務之《數字遊戲》

2016藍橋杯假期任務之《數字遊戲》

問題描述   棟棟正在和同學們玩一個數字遊戲。

  遊戲的規則是這樣的:棟棟和同學們一共n個人圍坐在一圈。棟棟首先說出數字1。接下來,坐在棟棟左手邊的同學要說下一個數字2。再下面的一個同學要從上一個同學說的數字往下數兩個數說出來,也就是說4。下一個同學要往下數三個數,說7。依次類推。

  為了使數字不至於太大,棟棟和同學們約定,當在心中數到 k-1 時,下一個數字從0開始數。例如,當k=13時,棟棟和同學們報出的前幾個數依次為:
  1, 2, 4, 7, 11, 3, 9, 3, 11, 7。

  遊戲進行了一會兒,棟棟想知道,到目前為止,他所有說出的數字的總和是多少。
輸入格式   輸入的第一行包含三個整數 n,k,T,其中 n 和 k 的意義如上面所述,T 表示到目前為止棟棟一共說出的數字個數。
輸出格式   輸出一行,包含一個整數,表示棟棟說出所有數的和。 樣例輸入 3 13 3 樣例輸出 17 樣例說明   棟棟說出的數依次為1, 7, 9,和為17。 資料規模和約定   1 < n,k,T < 1,000,000; 程式碼如下:
import java.util.Scanner;

public class Main {
	
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int n=input.nextInt();
		int k=input.nextInt();
		int t=input.nextInt();
		long  sum = 1,a = 1,num = 1;
		while(--t!=0)
		{
		num = ((a+a+n-1)*n/2+num)%k;
		sum += num;
		a = a+n;
		}
		System.out.println(sum);
	}
	
}
執行結果:
3 13 3
17