zoukankan      html  css  js  c++  java
  • 编程之美 找出符合条件的整数

    好不容易把内容看懂~

    最主要的一句话:只需要将10k%N的结果与余数信息数组里非空的元素相加,再去模N,看看会不会出现新的余数~

    时间太紧迫~先把自己写的代码贴上,以后再详解

     1 int FindMin(int N)
     2 {
     3     if(N <= 1)
     4         return N;
     5 
     6     int* A = new int[N];//这个是记录模N余i之后的数值
     7     
     8     memset(A, -1, sizeof(int) * N);
     9     int factor = 1;
    10     A[1] = 1;
    11 
    12     int i;
    13     for(i = 0; ; i ++)
    14     {
    15         factor *= 10;
    16         int m_gaowei = factor % N;
    17         
    18         if(m_gaowei == 0)
    19         {
    20             A[m_gaowei] = factor;//保存余数为0的数
    21             delete[] A;
    22             return factor;
    23         }
    24 
    25         if(A[m_gaowei] == -1)
    26         {
    27             A[m_gaowei] = factor;
    28         }
    29         //只要将高位的余数跟余数数组里面的余数相加模上N即可
    30         int k;//k代表的是前面的余数
    31         for(k = 1; k < N; ++k)//将高位的余数与前面的余数都相加再模上N,若产生新的余数的数值保存下来,另外若得到与以前相同的数值,不更新,因为要保存最小的
    32         {
    33             int new_wei = (m_gaowei + k) % N;
    34             //1新产生的余数不存在,2将factor与k相加,得到新的数,3只与小于factor的数进行想加,不要与后面的相加,与factor相加的数一定要小于factor
    35             if(A[new_wei] == -1 && A[k] != -1 && A[k] < factor)//最后一个判断条件是为了不让跟新产生出来的余数的数值相加得到模为0
    36             {
    37                 A[new_wei] = factor + A[k];
    38                 if(new_wei == 0)
    39                 {
    40                     int kvalue = A[k];
    41                     delete[] A;
    42                     return factor + kvalue;
    43                 }
    44             }
    45         }
    46     }
    47 }
    View Code
  • 相关阅读:
    AcWing 1135. 新年好 图论 枚举
    uva 10196 将军 模拟
    LeetCode 120. 三角形最小路径和 dp
    LeetCode 350. 两个数组的交集 II 哈希
    LeetCode 174. 地下城游戏 dp
    LeetCode 面试题 16.11.. 跳水板 模拟
    LeetCode 112. 路径总和 递归 树的遍历
    AcWing 1129. 热浪 spfa
    Thymeleaf Javascript 取值
    Thymeleaf Javascript 取值
  • 原文地址:https://www.cnblogs.com/leewiki/p/3715936.html
Copyright © 2011-2022 走看看