列表

详情


NC232002. 铁三角

描述

给定一个 n ,构造一个尽量长的正整数序列 a ,使得 ,且任意三个位置 满足不存在分别以 为三边边长的三角形。

输入描述

输入一行一个整数 

输出描述

输出两行,第一行一个整数 m 表示你所构造的序列的长度。

接下来一行 m 个整数为你所构造的序列 a

示例1

输入:

2

输出:

3
1 1 2

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C 解法, 执行用时: 3ms, 内存消耗: 384K, 提交时间: 2021-12-18 20:00:42

#include<stdio.h>
int main()
{
	long long int n;
	long long int a[10000];
	int m=0;
	int i,j;
	scanf("%lld",&n);
	a[0]=1;
	a[1]=1;
	i=1;
	while(a[i]<=n)
	{
		i++;
		a[i]=a[i-1]+a[i-2];
	}
	printf("%d\n",i);
	for(j=0;j<=i-1;j++)
		 printf("%lld ",a[j]);
}

C++ 解法, 执行用时: 4ms, 内存消耗: 656K, 提交时间: 2021-12-18 19:05:22

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll a[100],n,m;
int main(){
	scanf("%lld",&n);
	a[1]=a[2]=1;m=2;
	while(a[m]<=n) m++,a[m]=a[m-1]+a[m-2];
	printf("%lld\n",m-1);
	for(int i=1;i<m;i++)
	printf("%lld ",a[i]);
}

Python3 解法, 执行用时: 39ms, 内存消耗: 4624K, 提交时间: 2021-12-18 19:05:36

n = int(input())
ans = [1,1,2]
while ans[-1]<=n:
    ans.append(ans[-1]+ans[-2])
ans.pop()
print(len(ans))
print(' '.join(str(v) for v in ans))

Python2 解法, 执行用时: 16ms, 内存消耗: 3072K, 提交时间: 2022-01-09 23:07:35

m=int(input())
a=[1,1]
cnt=2
while a[-1]+a[-2]<=m:
    a.append(a[-1]+a[-2])
    cnt+=1
ans=' '.join(map(str,a))
print(cnt)
print(ans)

上一题