【每日一题】10月16日Quasi Binary,思维

Quasi Binary

https://ac.nowcoder.com/acm/problem/110925

题目描述

给你一个n,你需要只用0或者1两个数凑出一些十进制数累加等于n,并且需要十进制数的个数最小,并且输出最小个数k,以及那些数构成的?

Solution

只用0或者1构建很容易发现最少的个数就是n当中最大的十进制位的大小。其他位不需要那么大直接补0即可,比较显然这个条件。
接下来只需要去模拟每一位的剩余个数即可,总体比较简单。

#include <cstdio>
#include <algorithm>
using namespace std;

int num[10], cnt;
int main() {
    int n, k = 0;
    scanf("%d", &n);
    while (n) {
        k = max(k, n % 10);
        num[++cnt] = n % 10;
        n /= 10;
    }
    printf("%d\n", k);
    for (int i = 1; i <= k; ++i) {
        int ans = 0;
        for (int j = cnt; j; --j) {
            ans = 10 * ans;
            if (num[j])    ans += 1, --num[j];
        }
        printf("%d%c", ans, " \n"[i == k]);
    }
    return 0;
}
每日一题 文章被收录于专栏

每日一题

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 13:35
虽然不怎么光彩,经过这件事,可能我真的要去认同“面试八股文早该淘汰!不会用AI作弊的程序员=新时代文盲!”这句话了
HellowordX:Ai的出现是解放劳动力的,不是用来破坏公平竞争环境的,这样下去,轻则取消所有线上面试,严重了会影响整个行业对所有人产生影响,企业会拉高入职考核各种离谱考核会层出不穷
你找工作的时候用AI吗?
点赞 评论 收藏
分享
不亏是提前批,神仙打架,鼠鼠不配了
站队站对牛:现在92都报工艺岗了
投递韶音科技等公司7个岗位
点赞 评论 收藏
分享
MinJerous:虽然我一直说 计算机不怎么卡学历 但是至少得一本
点赞 评论 收藏
分享
07-07 14:30
复旦大学 Java
遇到这种人我也不知道说啥了
无能的丈夫:但我觉得这个hr语气没什么问题啊(没有恶意
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务