数据结构之字符串算术运算系列一

题目

找到最小的数字,使其数字之和为 N 并且可以被 10^N 整除。

Input : N = 5
Output : 500000
500000 is the smallest number divisible
by 10^5 and sum of digits as 5.

Input : N = 20
Output : 29900000000000000000000

分析

o 使一个数字可以被 10^N 整除,我们需要在数字末尾至少有 N 个零。 为了使数字最小,我们将 N 个零添加到数字的末尾。 现在,我们需要确保数字之和为N。为此,我们将尝试使数字的长度尽可能小以获得答案。 因此,我们继续在数字中插入 9,直到总和不超过 N。如果我们还有余数,那么我们将其保留为第一个数字(最高有效位),以使结果数字最小化。

static void digitsNum(int N)
{
    if (N == 0)
        Console.Write("0");
         
     
    if (N % 9 != 0)
        Console.Write((N % 9));
     
     
    for (int i = 1; i <= (N / 9); ++i)
        Console.Write("9");
         
     
    for (int i = 1; i <= N; ++i)
        Console.Write("0");
        Console.WriteLine("" );
     
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值