zoukankan      html  css  js  c++  java
  • 【数学】【P5076】 Tweetuzki 爱整除

    Description

    对于一个数 (k),找到任意一个 (x),满足 (0~leq~k~leq~x~leq~10^{18}) 且对于任意一个 (x) 进制数,把该数字各数位上的数字相加,最后得出的值若可以被 (k) 整除,则该数可以被 (k) 整除。

    Input

    输入仅包含一行一个整数 (k)

    Output

    输出一行一个整数代表任意一个符合要求的答案

    Hint

    (2~leq~k~leq~10^9)

    Solution

    考虑题目中给出的例子,各个位上的数加起来被三整除的数能够被三整除,我们来分析一下原因:

    不妨设这个数 (x) 是两位数,否则将两位看成一位做数学归纳:

    (x~=~10~a~+~b),则

    [x~=~10~a~+~b~=~a~+~b~+~9~a ]

    [x~equiv~0~(mod~3)~,~9a~equiv~0~(mod~3) ]

    于是

    [a~+~b~equiv~0~(mod~3) ]

    类似的可以发现,当一个进制数相邻两位的差值可以被 (k) 整除时,该数可以被 (k) 整除。

    设这是个 (x) 进制数,则更高一位减更低一位的差值为 (x~-~1)

    于是 (x~-~1~equiv~0~(mod~k))

    任意输出一个 (x) 即可。最简单的当然是输出 (k~+~1)

    Code

    a = int(input())
    print(a + 1)
    
  • 相关阅读:
    C# 设计模式
    FutureTask、Fork/Join、 BlockingQueue
    线程的几种创建方式
    行锁、表锁、乐观锁、悲观锁
    J.U.C之AQS
    同步容器并发容器
    线程不安全类
    线程封闭
    不可变对象
    安全发布对象—单例模式
  • 原文地址:https://www.cnblogs.com/yifusuyi/p/10091223.html
Copyright © 2011-2022 走看看