原题链接:
牛牛学数列1
牛牛学数列2
牛牛学数列3
牛牛学数列4
牛牛学数列5
牛牛学数列6
牛牛学数列1
循环内部嵌套if判断,奇数+偶数-
#include <iostream> using namespace std; int main() { int n,ans; cin >> n; for(int i=1;i<=n;i++) { if(i%2) ans+=i; else ans-=i; } cout << ans; return 0; }
牛牛学数列2
#include <stdio.h> #include <iostream> using namespace std; int main() { int n; double ans; cin >> n; for(int i=1;i<=n;i++) { ans+=1.0/i; } printf("%.6f\n",ans); return 0; }
牛牛学数列3
共累加2*n-1个数,设两个变量(ans用于累加1-3+5..._ans用于累加1.0/ans),过程中用if..continue;筛掉偶数,用flag的0,1交替改变加减运算,最后输出ans。
#include <cstdio> #include <iostream> using namespace std; int main() { int n,ans=0; double _ans=0; bool flag=1; cin >> n; for(int i=1;i<=2*n-1;i++) { if((i+1)%2) continue;//筛去偶数 if(flag)//交替加减 { ans+=i; _ans+=1.0/ans; flag=0; } else { ans-=i; _ans+=1.0/ans; flag=1; } } printf("%.3f\n",_ans); return 0; }
牛牛学数列4
ans用于累加1+2+3... _ans用于累加ans
#include <stdio.h> #include <iostream> using namespace std; int main() { int n,ans=0,_ans=0; cin >> n; for(int i=1;i<=n;i++) { ans+=i; _ans+=ans; } printf("%d\n",_ans); return 0; }
牛牛学数列5
设两个变量L,R初值都为1,每轮执行{L=L+R;R=R+L;},L,R将成为fib数列的后两项
if判断,偶数项则为n/2-1轮后的R,奇数项则为(n-1)/2轮后的L。
#include <cstdio> #include <iostream> using namespace std; int main() { int n; cin >> n; if(n=1) cout << "1" << endl;//第一项是特例,单独输出 else { int L=1,R=1; if(n%2) { for(int i=1,i<=((n-1)/2),i++) { L=L+R; R=R+L; } cout << L << endl; } else { for(int i=1,i<=(n/2-1),i++) { L=L+R; R=R+L; } cout << R << endl; } } return 0; }
牛牛学数列6
将A1-An存入数组操作
#include <iostream> using namespace std; int main() { long a[30],n; a[1]=0,a[2]=1,a[3]=1; cin >> n; for(int i=1;i<=(n-3);i++) { a[i+3]=a[i]+2*a[i+1]+a[i+2]; } cout << a[n] << endl; return 0; }