竞赛
考级
这题很折磨人(我做的时候) nsdd,但是魔怔写法
TX_Bernie
这一题没什么难度 上公式 对于偶数f[i]=f[i-1]+f[i/2] 对于奇数f[i]=f[i-1] 公式都有了就上代码把!
树上结了西瓜
#include<bits/stdc++.h> using namespace std; int a[1005],n; int main(){ scanf("%d",&n); for(int i=1;i<=n;i++){ a[i]=1; for(int j=1;j<=i/2;j++){ a[i]+=a[j]; } } printf("%d",a[n]); return 0; }
法兰西玫瑰
#include<bits/stdc++.h> using namespace std; int y(int a){ if(a==1) return 1; } int main(){ int n; cin>>n; cout<<y(n); }
梁添祎
chaizechen
我们以 444 为例子来进行说明 444 后面可以跟上 111 , 222 组成 141414 , 242424 141414 后面跟不了, 242424 可以跟上 111 组成 124124124 再加上 444 本身就可以得到 444 的种类 即 141414 , 242424 , 124124124 , 444 而我们只要算出 111 , 222 的种类就可以加起来得到 444 的种类
AC君
这道题写出前几项后会发现是有规律可循的: 首先规定 f[1]=1; f[2]=f[1]+1; f[3]=f[1]+1; f[4]=f[1]+f[2]+1; f[5]=f[1]+f[2]+1; f[6]=f[1]+f[2]+f[3]+1; f[7]=f[1]+f[2]+f[3]+1; … f[n]=f[1]+…+f[n/2]; 每一次都由1加到n/2; 然后题目中给定n为1000以内,所以双重循环完全可以实现 AC代码 欢迎加入团队
唱跳坤
很烫的凉水
zhouty
#include<bits/stdc++.h> using namespace std; int main(){ int n , cnt = 1 , f[1001] = {0,1,2}; cin >> n; for (int i = 3;i <= n;i++){ if (i % 2 == 0) f[i] = f[i - 1] + f[i / 2]; else f[i] = f[i - 1]; } cout << f[n]; return 0; }
DARK SPECTRE
༺ཌༀ元气满满ༀད༻
#include <iostream> using namespace std; int main(){ int n,a[1005]={1,1}; cin>>n; for (int i=2;i<=n;i++){ if (i%2 == 0){ a[i] = a[i-1]+a[i/2]; }else{ a[i] = a[i-1]; } } }
烈火麒麟