首页 > 其他 > 详细

hdu 1104 Remainder

时间:2014-07-30 23:30:25      阅读:502      评论:0      收藏:0      [点我收藏+]

http://acm.hdu.edu.cn/showproblem.php?pid=1104

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

题意:开始给了你n, k, m,每次由+m, -m, *m, modm得到新的N,继续对N这样的操作,直到(n+1) mod k== N mod k时结束,并且打印路径

bubuko.com,布布扣
 1 #include <cstdio>
 2 #include <iostream>
 3 #include <cstring>
 4 #include <queue>
 5 #include <string>
 6 #include <algorithm>
 7 using namespace std;
 8 char str[4]={+,-,*,%};
 9 int n,k,m;
10 bool vis[200000];
11 struct node
12 {
13     int num;
14     int step;
15     string st;
16 }st1,st2;
17 
18 void bfs()
19 {
20     memset(vis,false,sizeof(vis));
21     queue<node>q;
22     st1.num=n;
23     st1.step=0;
24     st1.st="";
25     q.push(st1);
26     vis[((n%k)+k)%k]=true;
27     while(!q.empty())
28     {
29        st2=q.front();
30        q.pop();
31        if(((n+1)%k+k)%k==((st2.num%k)+k)%k)
32        {
33            printf("%d\n",st2.step);
34            cout<<st2.st<<endl;
35            return ;
36        }
37        for(int i=0; i<4; i++)
38        {
39            if(i==0)
40            {
41                st1.num=(st2.num+m)%(k*m);
42                st1.st=st2.st++;
43            }
44            else if(i==1)
45            {
46                st1.num=(st2.num-m)%(k*m);
47                st1.st=st2.st+-;
48            }
49            else if(i==2)
50            {
51                st1.num=(st2.num*m)%(k*m);
52                st1.st=st2.st+*;
53            }
54            else
55            {
56                st1.num=(st2.num%m+m)%m%(k*m);
57                st1.st=st2.st+%;
58            }
59            st1.step=st2.step+1;
60            if(!vis[(st1.num%k+k)%k])
61            {
62                q.push(st1);
63                vis[(st1.num%k+k)%k]=true;
64            }
65        }
66     }
67     printf("0\n");
68 }
69 
70 int main()
71 {
72     while(scanf("%d%d%d",&n,&k,&m)!=EOF)
73     {
74         if(n==0&&k==0&&m==0) break;
75         bfs();
76     }
77     return 0;
78 }
View Code

 

hdu 1104 Remainder,布布扣,bubuko.com

hdu 1104 Remainder

原文:http://www.cnblogs.com/fanminghui/p/3879182.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!