zoukankan      html  css  js  c++  java
  • uva 471

    题意:给出一个数n,问有多少组数满足是s1/ s2 =n,要求组成s1和s2的数字没有重复的。

    分析:枚举,然后二进制判断各位数字是否相同。

     1 #include<iostream>
     2 #include<cstdio>
     3 #define INF 9876543210
     4 using namespace std;
     5 
     6 bool judge(long long n)
     7 {
     8     int cnt=0;
     9     int m;
    10     while(n)
    11     {
    12         m=1<<(n%10);//对每位数字进行扩展为2^n
    13         if(cnt&m)//查找是否其它位上有贡献的1
    14             return false;
    15         cnt|=m;//把所有的数加起来
    16         n/=10;
    17     }
    18     return true;
    19 }
    20 
    21 int main()
    22 {
    23     int t;
    24     long long n,s1,s2;
    25     scanf("%d",&t);
    26     while(t--)
    27     {
    28         scanf("%lld",&n);
    29         for(s2=1;s2<=INF;++s2)
    30         {
    31             s1=n*s2;
    32             if(s1>INF)
    33                 break;
    34                 if(judge(s1)&&judge(s2))
    35                     printf("%lld / %lld = %lld
    ",s1,s2,n);
    36         }
    37         if(t)
    38             cout<<endl;
    39     }
    40     return 0;
    41 }
  • 相关阅读:
    吉他 摄影
    前端思考独处时间自我成长
    约束力
    js算法
    旅行计划
    生产者消费者问题
    Lock锁
    线程和进程
    什么是JUC
    GC日志分析和垃圾回收器的新展望
  • 原文地址:https://www.cnblogs.com/sunshinemxh/p/4850978.html
Copyright © 2011-2022 走看看