s = int(input()) l = [1, 1] for i in range(s - 2): ll = l[-1] + l[-2] l.append(ll) l.remove(-3) print(l[-1]) 优化这段代码
时间: 2023-05-24 07:01:02 浏览: 42
可以使用循环赋值和元组打包来简化代码,同时使用列表解析式可以提高效率。以下是优化后的代码:
s = int(input())
a, b = 1, 1
for i in range(s - 1):
a, b = b, a + b
print(a)
相关问题
下面代码翻译为 Python #include<cstdio> #define mod 1000000007 int main() { int n,sum=0,x;scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d",&x),sum+=x; int everycolumn=sum; for(int i=1;i<=n-1;i++)everycolumn=1ll*everycolumn*i%mod; int digit[5001];digit[0]=1; for(int i=1;i<n;i++)digit[i]=1ll*digit[i-1]*10%mod; int ans=0; for(int i=0;i<n;i++)ans=(ans+1ll*digit[i]*everycolumn)%mod; printf("%d",ans); return 0; }
以下是代码的 Python 翻译:
```python
mod = 1000000007
n = int(input())
sum = 0
for i in range(n):
x = int(input())
sum += x
everycolumn = sum
for i in range(1, n):
everycolumn = (everycolumn * i) % mod
digit = [0] * n
digit[0] = 1
for i in range(1, n):
digit[i] = (digit[i-1] * 10) % mod
ans = 0
for i in range(n):
ans = (ans + digit[i] * everycolumn) % mod
print(ans)
```
代码的功能是:读入一个整数 n,再读入 n 个整数,计算这 n 个整数的和 sum。然后,计算从第一列到第 n-1 列的每一列的和 everycolumn,并将其乘以 10 的不同次方,最后将所有结果相加。最后,将结果对 1000000007 取模,并输出结果。
改写成python语言#include<bits/stdc++.h> using ll=long long; const int maxn=1e3+1e2; const int inf=1e3; int step[maxn]; void init(){ std::queue<int>q; step[0]=1; q.push(1); while(!q.empty()){ int y=q.front();q.pop(); for(int x=1;x<=y;x++){ int ny=y+(y/x); if(step[ny]||ny>inf){ continue; } step[ny]=step[y]+1; q.push(ny); } } } void solve() { int n,k;std::cin>>n>>k; std::vector<int>b(n),c(n); for(auto&i:b)std::cin>>i; for(auto&i:c)std::cin>>i; std::vector<int> dp(maxn*maxn); for(int i=0;i<n;i++){ for(int j=k;j>=step[b[i]];j--){ dp[j]=std::max(dp[j],dp[j-step[b[i]]]+c[i]); } } std::cout<<dp[k]<<'\n'; } int main() { init(); std::cin.tie(nullptr)->sync_with_stdio(false); int t;std::cin>>t; while(t--)solve(); return 0; }
以下是改写后的 Python 代码:
```python
import queue
maxn = 1001
inf = 1000
step = [0] * maxn
def init():
global step
q = queue.Queue()
step[0] = 1
q.put(1)
while not q.empty():
y = q.get()
for x in range(1, y + 1):
ny = y + (y // x)
if step[ny] or ny > inf:
continue
step[ny] = step[y] + 1
q.put(ny)
def solve():
n, k = map(int, input().split())
b = list(map(int, input().split()))
c = list(map(int, input().split()))
dp = [0] * (maxn * maxn)
for i in range(n):
for j in range(k, step[b[i]] - 1, -1):
dp[j] = max(dp[j], dp[j - step[b[i]]] + c[i])
print(dp[k])
if __name__ == '__main__':
init()
t = int(input())
for _ in range(t):
solve()
```
请注意,该段代码包含了输入输出部分,因此需要在运行时手动输入相关数据。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)