列表

详情


NC201725. 恢复数列

描述

小y的数学作业不小心被泼上了墨水。有道题看不清了,现在他想请你帮他恢复这道题。
这道数学题原型如下:
给出一个长度为n的非负数列a,记数列中第i个数字为a_i。请你求出任意一个x满足:
幸运的是,小y依然记得自己所求得的答案x。现在请你帮他找回这个数列a。
你的输出需要保证

输入描述

输入共一行两个用空格隔开的正整数n,x。含义见【题目描述】

输出描述

输出共一行n个用空格隔开的正整数,第i个数字表示a_i
当你输出多于n个数字时,只有前n个数字有效。
如果有多种答案,你只需要输出任意一种
输入保证有解。

示例1

输入:

12 6

输出:

2 0 0 0 0 0 0 1 1 1 1 1

说明:

6^2=6^0+6^0+6^0+6^0+6^0+6^0+6^1+6^1+6^1+6^1+6^1=36

原站题解

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

C++14(g++5.4) 解法, 执行用时: 84ms, 内存消耗: 3940K, 提交时间: 2020-04-04 21:53:56

#include<iostream>
using namespace std;
int n,x,a1;
int main(){
    cin>>n>>x;
    a1=(n-2)/(x-1);
    cout<<a1<<" ";
    for(int i=1;i<=x;i++)
        cout<<"0 ";
    for(int i=1;i<a1;++i)
        for(int j=1;j<x;++j)
            cout<<i<<" ";
}

C++11(clang++ 3.9) 解法, 执行用时: 51ms, 内存消耗: 3704K, 提交时间: 2020-08-05 23:18:51

#include<bits/stdc++.h>
using namespace std;
int a,n; 
int main()
{	
	scanf("%d%d",&n,&a);
	int k=(n-2)/(a-1);
	printf("%d %d ",k,0);
	for(int i=k-1;i>=0;i--)
		for(int j=1;j<=a-1;j++)
			printf("%d ",i);
	return 0;
}

上一题