Online Compiler C

#include <stdio.h> // 计算第n个格子的米粒数:2^(n-1) long long calculateRiceGrains(int n) { // 检查输入范围 if (n < 1 || n > 64) { return -1; // 返回错误值 } long long grains = 1; // 第一个格子为1粒米 int i; // 通过循环计算2^(n-1) for (i = 1; i < n; i++) { grains *= 2; } return grains; } int main() { int n; scanf("%d", &n); long long result = calculateRiceGrains(n); if (result != -1) { // 输入合法时输出结果 printf("%lld\n", result); } return 0; }
1) Этот код вычисляет количество рисовых зёрен на n-й клетке шахматной доски по формуле 2^(n-1). Также он проверяет, что введённое число n находится в диапазоне от 1 до 64.

2) Подсказки:
- Обрати внимание, что при n=1 цикл не выполнится ни разу, и функция вернёт grains=1, что корректно.
- Для больших значений n (близких к 64) может произойти переполнение, но в данном случае тип long long этого избегает.