zoukankan      html  css  js  c++  java
  • Find The Multiple (DFS递归)

    题意:输入一个不超过200的数 n,然后求得一个数字k,数字满足:能被n整除,每一位只有0,1。这样的数字k会有很多个,然以输出一个就可以。

     注意unsigned __int64的范围,-(10^19)~(10^20)所以步数不能超过19次。 (摘)

     

    附:同余模定理:

    (a*b)%n = (a%n *b%n)%n;

    (a+b)%n = (a%n +b%n)%n;

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<cmath>
     6 using namespace std;
     7 
     8 int n,flag;
     9 
    10 void DFS(int step,long long num)
    11 {
    12     if(step==19 || flag) return; //64位 最多加19步
    13     if(num%n==0)
    14     {
    15         cout<<num<<endl;
    16         flag=1;   //如果得到一个数了,就可以全退出
    17         return;
    18     }
    19     DFS(step+1,num*10);
    20     DFS(step+1,num*10+1);
    21 }
    22 
    23 int main()
    24 {
    25     ios::sync_with_stdio(false);
    26     while(cin>>n && n!=0)
    27     {
    28         flag=0;
    29         DFS(0,1);
    30     }
    31 }
  • 相关阅读:
    jstat命令-帮助优化java性能
    使用nginx搭建简单文件服务器
    JVM初探
    fastDFS shiro权限校验 redis FreeMark页面静态化
    spring AOP
    Java多线程并发
    js插件之Ocupload
    Jquery总结
    shell
    Linux(二)
  • 原文地址:https://www.cnblogs.com/thunder-110/p/8505103.html
Copyright © 2011-2022 走看看