竞赛
考级
法兰西玫瑰
SJZ
#include <iostream> using namespace std; int main(){ long long n,a[51] = {1,5}; cin >> n; for(int i = 2;i < n;i ++){ a[i] = a[i - 1] * 2 - 1; } cout << a[n - 1]; return 0; }
为什么要学c++
这一道题的递推式推出来不难。首先,在后面加一个数字就只能是奇数或者偶数。那我们设想一下,如果前一位是2,那后一位也得是2。因此,递推数组只需加一即可。而如果前一位是奇数,那么后一位就能取1和3。也就是f[i] = f[i - 1] - 1(剪掉全是2的填法)* 2 + 1(加上全是2的填法)。代码如下:
复仇者_THUNDER
嫌疑を避ける ~~
沈思邈
编程的ikun
#include <bits/stdc++.h> using namespace std; long long n,f[55]; int main(){ cin>>n; f[1]=3; f[2]=5; f[3]=9; for(int i=4;i<=n;i++){ f[i]=f[i-1]*2-1; } cout<<f[n]; return 0; }
Voldemort
zhouty
#include<bits/stdc++.h> using namespace std; long long p[1005]; int main(){ long long n; cin >> n; p[1] = 1; p[2] = 5; p[3] = 9; for(int i = 4;i <= n;i++) p[i] = p[i-1] * 2 - 1; cout << p[n]; return 0; }
DARK SPECTRE