首页 > 代码库 > 编程之美 找出符合条件的整数
编程之美 找出符合条件的整数
好不容易把内容看懂~
最主要的一句话:只需要将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 =http://www.mamicode.com/ A[k]; 41 delete[] A; 42 return factor + kvalue; 43 } 44 } 45 } 46 } 47 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。