C++题目描述书架上原本有若干本书现在需要重新摆放如果每本书都不在它最初的位置那么有多少种摆放方式输入描述一行一个整数 n表示书的数量1=n=20。输出描述一行表示书被完全重置的方式种数。样例1输入5输出44提示1=n=20
解题思路:
假设有n本书,每本书有两种状态,即在原位和不在原位。那么总共有2^n种情况。
但是题目要求每本书都不在原位,所以需要减去一种情况,即所有书都在原位的情况。
所以最后的结果为2^n - 1。
具体实现:
读入n,计算2^n - 1,输出结果。
C++代码实现:
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int n;
cin >> n;
int ways = pow(2, n) - 1;
cout << ways << endl;
return 0;
}
时间复杂度分析:
计算2^n的时间复杂度为O(logn),所以整个程序的时间复杂度为O(logn)。
原文地址: https://www.cveoy.top/t/topic/ie6H 著作权归作者所有。请勿转载和采集!