zoukankan      html  css  js  c++  java
  • LeetCode258-各位相加(猜想公式)

    1、正常的情况就是循环,把每一位加起来。

    2、O1时间,还真是想不到。

    看了一下答案

    public int addDigits(int num) {
            if (num == 0) return 0;
            return (num-1)%9+1;
        }

    所以说O1,就意味着一个公式。

    这个公式,只能靠从输入输出中,找规律猜出来,推倒是很难的。

    要求是加到只有各位,那就是只有1~9这几个数字。 0 是不可能的,没有一个数各位相加为0,除了0

    那么要做的就是给num 和 1~9 做一个映射,这个映射关系就是公式!

    9个数,其实一般结果都是会循环的,不然也不会有规律。

    1~9 就是它本身

    10 ~ 19   这里的数字%9 都是对的 10% 9 =1 11 %9 =2

    但是 18 % 9 =0 了 1+8 应该是9

    19%9 =1 但是1+9=10  1+0 = 0

    17%9 = 8   18要得到9  就要是(18-1)%9+1.

    这样用在19上面 就是 (19-1)%9 + 1 = 1

    也对

    所以猜想公式 就是 (num-1)%9+1

    就是这么没有道理

  • 相关阅读:
    第六次上机作业
    NOIP2016 DAY1 T2天天爱跑步
    NOIP2009 T2 Hankson的趣味题
    NOIP2013 DAY2 T3火车运输
    线段树
    NOIP2012 DAY2 T2借教室
    NOIP2015 DAY2 T1跳石头
    NOIP2016 DAY2 T3 愤怒的小鸟
    文本编辑常用快捷键
    洛谷P1516 青蛙的约会
  • 原文地址:https://www.cnblogs.com/weizhibin1996/p/9656944.html
Copyright © 2011-2022 走看看