hdu1104 Remaindr-----bfs+数论
来源:互联网 发布:活动发布网站源码 编辑:程序博客网 时间:2024/06/08 09:44
本题链接
题意:输入3个数 n,k,m ,问通过对n对m进行若干 +, - , * , % 4种操作后 ,能不能得到一个数N,使得 N%k == (n+1)%k
若能,则输出进行操作次数 若不能,则输出0
输入有多组数据,输入0 0 0表示所有数据结束.
这里的 % 不能直接使用 因为,题目中的%是数论中的取模.
%: 如果 a = b * q + r (q > 0 and 0 <= r < q) 则 a % q = r
这里必须保证r>0, 而直接对一个负数进行%时则会出现负数.
代码:
#include<stdio.h> #include<iostream> #include<string> #include<cstring> #include<queue> using namespace std; struct cc { int n,m; }; string op[1005];//记录操作 int step[1005]; int vis[1005],ans,k; int main() { int n,m,ok,flag; while(cin>>n>>k>>m) { ok=0; if(!n&&!m&&!k)break; memset(step,0,sizeof(step)); memset(vis,0,sizeof(vis)); ans=(n+1+1000*k)%k; for(int i=0;i<=1001;i++) op[i].clear();//操作 queue <cc> q; cc c; c.m=(n+1000*m)%m;//注意n=-1和n=-1+10(k)做%运算结果不一样,所以事先存n%m;当以后遇到%时c.n=c.m%m; c.n=(n+1000*k)%k; q.push(c); vis[c.n]=1; while(!q.empty()) { cc temp=q.front(); q.pop(); for(int i=0;i<4;i++) { cc u=temp; switch(i) { case 0:u.n=(u.n+m+1000*k)%k;break; case 1:u.n=(u.n-m+1000*k)%k;break; case 2:u.n=(u.n*m+1000*k)%k;u.m=0;break;//u.n*m后,u.n%m==0;以后遇到%运算后u.n==0!=u.m%m; case 3:u.n=(u.m+1000*k)%k;break; } if(!vis[u.n]) { step[u.n]=step[temp.n]+1; vis[u.n]=1; switch(i) { case 0:op[u.n]=op[temp.n]+'+';break; case 1:op[u.n]=op[temp.n]+'-';break; case 2:op[u.n]=op[temp.n]+'*';break; case 3:op[u.n]=op[temp.n]+'%';break; } q.push(u); if(u.n==ans){ok=1;flag=u.n;break;} } } if(ok)break; } if(!ok) printf("0\n"); else { int t=0; cout<<step[flag]; cout<<op[flag]<<endl; } } }
0 0
- hdu1104 Remaindr-----bfs+数论
- hdu1104 BFS + 数论
- 数论 + bfs Remider hdu1104
- hdu1104
- hdu1104 Remainder bfs找算式是否有解……
- 【搜索】HDU1104
- hdu 1104 BFS + 数论
- hdu 1664 BFS + 数论
- 1104 Remainder(数论+bfs)
- POJ_3126_Prime Path(数论+BFS)
- hdu 1104 remainder bfs+数论
- HDU 4294 Multiple (数论+bfs)
- hdu 1104 (数论+bfs)
- HDOJ1104 Remainder(数论+BFS)
- POJ3126 Prime Path【数论】【BFS】
- zoj 1136 Multiple(bfs+数论+string)
- uva 718 - Skyscraper Floors(数论+bfs)
- uva 1341 - Different Digits(数论+bfs)
- Bucket Sort算法实现
- 搭建淘宝Tair服务器
- 端口
- 【c++】PAT (Advanced Level) 1006. Sign In and Sign Out (25)
- 使用SqlCacheDependency类的操作流程
- hdu1104 Remaindr-----bfs+数论
- python中3个帮助函数help,dir,type的使用
- 对于疏于经营情感的情侣来说,时间才是最让人担心的小三
- 程序员编程艺术---5、寻找满足和为定值的两个或多个数
- 清理过期数据的存储过程
- 使用ez_setup.py安装setuptools报错
- Unknown Mozilla path (MOZILLA_FIVE_HOME not set
- 常用的邮箱类型
- 设计模式学习之简单工厂模式