• hdu 1104 数论+bfs


    题意:给n,m,k;输出n经过+-*%后(n%k+k)%k==((n+1)%k)%k  输出最小路径与运算副

    zsd:% 只是求余数 有正负 mod 是求模 无正负、

    yhd:对m*k求余对 对k求余不对

    #include<iostream>
    #include<queue>
    using namespace std;
    struct Node
    {
        int x;
        int step;
        queue<char> q;
    };
    int v[1000010];
    int n,m,k;
    bool bfs()
    {
        int s=((n+1)%k+k)%k;
        queue<Node>q;
        Node now,next;
        now.x=n;now.step=0;
        q.push(now);
        memset(v,0,sizeof(v));
        while(!q.empty())
        {
            now=q.front();
            if((now.x%k+k)%k==s)
            {
                printf("%d
    ",now.step);
                while(now.step--)
                {
                    printf("%c",now.q.front());
                    now.q.pop();
                }
                printf("
    ");
                return true;
            }
            q.pop();
            int xx;
            xx=(now.x+m)%(k*m);
            if(!v[(xx%k+k)%k])
            {
                v[(xx%k+k)%k]=1;
                next=now;next.x=xx;next.q.push('+');next.step++;
                q.push(next);
            }
            xx=(now.x-m)%(k*m);
            if(!v[(xx%k+k)%k])
            {
                 v[(xx%k+k)%k]=1;
                next=now;next.x=xx;next.q.push('-');next.step++;
                q.push(next);
            }
            xx=(now.x*m)%(k*m);//因为xx会变得很大 所以要求余变小
            if(!v[(xx%k+k)%k])
            {
                v[(xx%k+k)%k]=1;
                next=now;next.x=xx;next.q.push('*');next.step++;
                q.push(next);
            }
            xx=((now.x%m+m)%m)%(m*k);
            if(!v[(xx%k+k)%k])
            {v[(xx%k+k)%k]=1;
            next=now;next.x=xx;next.q.push('%');next.step++;
            q.push(next);
            }
        }
        return 0;
    }
    int main()
    {
    
        while(scanf("%d%d%d",&n,&k,&m)!=EOF)
        {
            if(n==0&&k==0&&m==0)
                break;
            if(!bfs())
                printf("0
    ");
        }
        return 0;
    }
    
  • 相关阅读:
    css clear
    设置 系统软件
    Canvas 生成 bitmap
    HashTable
    JSF
    android 自定义 锁屏
    java socket
    php mysql 配置
    mysql 启动方法
    jQuery 表格
  • 原文地址:https://www.cnblogs.com/zhangdashuai/p/3700576.html
Copyright © 2020-2023  润新知