牛客OI周赛15-提高组 - 恢复数列

恢复数列

https://ac.nowcoder.com/acm/contest/4912/B

图片说明
思路:可以证明n=X+m(X-1)+1 (m>=0),如果除去a[1].那么就是X+m(X-1)个数。
因为每X个X^t的和=X^(t+1),然后再从m(X-1)个中拿出X-1个数和X^(t+1)合成X^(t+2)
一直到合成只有一个数X^(t+m+1)。t可以任意取。

#include <bits/stdc++.h>
#define LL long long
using namespace std;

vector<int> v;
int main(){
    int n, x; scanf("%d%d", &n, &x);
    int m=(n-1-x)/(x-1);
    for(int i=1; i<=x; i++){
        v.push_back(0);
    }
    for(int i=1; i<=m; i++){
        for(int j=1; j<=(x-1); j++){
            v.push_back(i);
        }
    }
    printf("%d ", m+1);
    for(auto x: v){
        printf("%d ", x);
    }
    printf("\n");

    return 0;
}
全部评论

相关推荐

昨天 15:58
江西农业大学 C++
听说很多OD都是进了存储部门,这OD在华为存储发展咋样?有没有了解的
被晒没的咸鱼:从业界角度来说,其实华为存储很赚钱,而且ai发展存储刚需大,还有很高的上升空间;但是历史原因导致内部官僚主义严重
投递华为等公司10个岗位 > 华为存储OD事变
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务