zoukankan      html  css  js  c++  java
  • UVALive2701 UVA1189 POJ1426 ZOJ1530 Find The Multiple

    Regionals 2002 >> Asia - Dhaka

    问题链接:UVALive2701 UVA1189 POJ1426 ZOJ1530 Find The Multiple

    问题简述:输入若干个正整数n,n=0则结束。对于输入的n,输出正整数m,m是n的倍数并且只包含数字0和1。

    问题分析:所求的值不是很大的话,用类型unsigned long long就可以了。开始时,先用1试探,然后是10和11,然后是100、101、110和111,位数逐步增加直到找到能被n整除的数为止。

    这个程序虽然在UVALive和UVA上可以AC,但是在POJ上用C++提交是“Time Limit Exceeded”,有点郁闷(狗血剧)。在POJ上用G++提交就AC了。

    AC通过的C++语言程序如下:

    /* UVALive2701 UVA1189 POJ1426 ZOJ1530 Find The Multiple */
    
    #include <iostream>
    #include <queue>
    #include <bitset>
    
    using namespace std;
    
    typedef unsigned long long ULL;
    
    void bfs(int n)
    {
        queue<ULL> q;
    
        q.push(1);
    
        while(!q.empty()) {
            ULL val = q.front();
            q.pop();
    
            if(val % n == 0) {
                cout << val << endl;
                break;
            } else {
                q.push(val * 10);
                q.push(val * 10 + 1);
            }
        }
    }
    
    int main()
    {
        int n;
    
        while(cin >> n && n != 0)
            bfs(n);
    
        return 0;
    }


  • 相关阅读:
    Java IO: 读取classpath资源
    Java IO: Reader和Writer
    Java IO: 读写zip文件
    OpenFlow运行机制总结
    OpenFlow流表概述
    Java日志系统(学习总结)
    卷积神经网络重要回顾
    Java Servlet学习笔记
    fragment实例
    Fragment应用
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564432.html
Copyright © 2011-2022 走看看