1 条题解
-
0
#include #include using namespace std;
string add(const string &a,const string &b) { string res=""; int carry=0,i=a.size()-1,j=b.size()-1; while(i>=0||j>=0||carry){ int sum= carry; if(i>=0) sum+=a[i--]-'0'; if(j>=0) sum+=b[j--]-'0'; carry=sum/10; res = static_cast(sum%10+'0') +res; }
return res;}
int main() {
string dp[4][101]={}; dp[1][1]="1"; dp[1][2]="1"; dp[1][3]="2"; dp[2][2]="1"; dp[2][3]="1"; dp[3][3]="1"; for(int j=4;j<=100;j++){ dp[1][j]= add( add(dp[1][j-1],dp[2][j-1]),dp[3][j-1] ); dp[2][j]= add( add(dp[1][j-2],dp[2][j-2]),dp[3][j-2] ); dp[3][j]= add( add(dp[1][j-3],dp[2][j-3]),dp[3][j-3] ); } int n; cin>>n; cout<<add( add(dp[1][n],dp[2][n]),dp[3][n] )<<endl; return 0;}
- 1
信息
- ID
- 1154
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- (无)
- 递交数
- 25
- 已通过
- 8
- 上传者