解题思路:递归嵌套,关键只是要看懂题目给出的公式到底是什么东西(给的数据真的很难猜啊)
注意事项: A1= sin(1)
A2 = sin(1-sin(2))
A3 = sin(1-sin(2-sin(3)))
S1 = A1 + 1
S2 = (A1 + 2)A2 + 1
S3 = ((A1 + 3)A2 +2)A3 +1
以此类推套出An和Sn就行
参考代码:
#include<bits/stdc++.h> using namespace std; string An=""; string Sn=""; int N; map<int,string>An_; string getAn(int n,int i){ if(n==1) return "sin("+to_string(i)+")"; if((i-n)&1) An = "sin("+to_string(i-n+1)+"+"+getAn(n-1,i)+")"; else An = "sin("+to_string(i-n+1)+"-"+getAn(n-1,i)+")"; return An; } string getSn(int n,int i){ if(n==1) return An_[1]+"+"+to_string(i); Sn = "("+getSn(n-1,i)+")"+An_[n]+"+"+to_string(i-n+1); return Sn; } main(){ cin>>N; for(int i=1;i<=N;i++){ An_[i] = getAn(i,i); //cout<<An_[i]<<endl; } cout<<getSn(N,N)<<endl; }
0.0分
0 人评分