# Array# Simulation# Math

a700 - 2、国王的麦子(Wheat)

🔗 前往 ZeroJudge 原題

題目描述

題目描述一個 7x8 的棋盤,棋盤上的每個格子包含一個數字,數字的規律是隨著行和列的增加而指數級增長。題目要求讀取多組輸入,每組輸入包含行號 i 和列號 j,然後輸出棋盤上第 i 行第 j 列的數字。

解題思路

題目要求計算棋盤上特定位置的數字,觀察棋盤的規律可以發現,每個數字都是 2 的冪次方。棋盤的行和列號碼可以轉換為對應的冪次方。具體來說,第 i 行第 j 列的數字是 2^(8*(i-1) + (j-1))。程式碼首先預先計算出所有可能的數字,並儲存在一個陣列中。然後,對於每組輸入,根據行號和列號計算陣列的索引,並輸出對應的數字。

複雜度分析

  • 時間複雜度: O(1)
  • 空間複雜度: O(64)

程式碼

#include <stdio.h>
long long int a[65];
int main(){
	long long int n=1;
	for(int i=0;i<64;i++){
		a[i]=n;
		n<<=1;
	}
	int x,y;
	while(scanf("%d%d",&x,&y)>0){
		printf("%lld\n",a[x*8+y-9]);
	}
}

Discussion