标题:大家一起来研究,一起分享啊
只看楼主
草狼
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:577
专家分:1040
注 册:2010-4-6
结帖率:94.44%
 问题点数:0 回复次数:5 
大家一起来研究,一起分享啊
n的倍数
时间限制 : 15000 ms    内存限制 : 32 MB
提交次数 : 96    通过次数 : 31
题目描述
va有时候没带电脑来实验室, 他又太无聊了, dxp又不在, 他就想偷偷用dxp的电脑来盘dota, sanguosha什么的。va打开了电脑,来到登陆界面, dxp居然设置了密码, 不过好在还有密码提示(估计是密码太长了dxp也记不住吧)。密码提示:密码是一个只含0和1的整数,这个数又是给定整数n的倍数, 而且尽可能的小。
输入描述
每行输入一个数n(n<=10000)。
输出描述
输出密码。
样例输入
1
2

样例输出
1
10

搜索更多相关主题的帖子: 研究 分享 
2010-05-05 19:28
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
得分:0 
贴ACM地址。

哥去AC.
2010-05-05 19:38
草狼
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:577
专家分:1040
注 册:2010-4-6
得分:0 
http://192.168.7.42/problemDetail.aspx?pid=1414   hehe
2010-05-05 20:09
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
得分:0 
回复 2楼 Devil_W
你精神真好啊

我就是真命天子,顺我者生,逆我者死!
2010-05-05 21:28
qaz107
Rank: 2
等 级:论坛游民
帖 子:36
专家分:33
注 册:2010-2-17
得分:0 

什么意思,,,都没看懂,,,
2010-05-06 11:48
草狼
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:577
专家分:1040
注 册:2010-4-6
得分:0 
#include <iostream>
#include <climits>
#include <queue>
#include <stack>
using namespace std;

const int maxn = 10000 + 5;

struct {
    char val; //last digit 0 or 1, -1 for illegal
    int prev;
} a[maxn];

int Queue[maxn];
int * const Stack = Queue;

int main()
{
    int n;
    while (scanf("%d", &n) != EOF){
        if (n == 0){
            printf("0\n");
            continue;
        }

        //init
        for (int i = 0; i < n; i++){
            a[i].val = -1;
        }
        a[1 % n].val = '1';
        a[1 % n].prev = -1;

        int *Base, *Top;
        Base = Top = Queue;
        *Top++ = 1;
        while (Base != Top && a[0].val == -1){
            int x = *Base++;

            int y = (x * 10) % n;
            if (a[y].val == -1){
                a[y].val = '0';
                a[y].prev = x;
                *Top++ = y;
            }

            int z = y + 1;
            if (z >= n) z -= n;
            if (a[z].val == -1){
                a[z].val = '1';
                a[z].prev = x;
                *Top++ = z;
            }
        }

        Base = Top = Stack;
        int x = 0;
        do {
            *Top++ = a[x].val;
            x = a[x].prev;
        } while (x != -1);

        while (Base != Top){
            putchar(*--Top);
        }
        putchar('\n');
    }
return 0;
}

 这代码能AC  供大家参考
2010-05-06 21:49



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-305497-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.147811 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved