题目描述
题解
代码
c++
typedeflonglongll;constintmod=1e9+7;constintN=1000010; lldp[N][2]; intmain() { intk; scanf("%d", &k); memset(dp, 0, sizeofdp); dp[0][0] =1; for (inti=1; i<=k; ++i) { dp[i][0] = (dp[i-1][1] *3) %mod; dp[i][1] = (dp[i-1][1] *2+dp[i-1][0]) %mod; } printf("%lld\n", dp[k][0]); return0; }
空间优化(c++)
typedeflonglongll;constintmod=1e9+7;constintN=1000010; lldp[2]; intmain() { intk; scanf("%d", &k); dp[0] =1; dp[1] =0; for (inti=1; i<=k; ++i) { inta= (dp[1] *3) %mod; intb= (dp[1] *2+dp[0]) %mod; dp[0] =a; dp[1] =b; } printf("%lld\n", dp[0]); return0; }
作者简介:godweiyang,知乎同名,华东师范大学计算机系硕士在读,方向自然语言处理与深度学习。喜欢与人分享技术与知识,期待与你的进一步交流~