// 题意就是 n经过和m 的+ - * % 后的结果%k后 与最初的(n+1)%k 是否会相等 要是存在//  那么 求最少的步数 // 明显的模拟加bfs 不过我却忽略了2个重点:// 1. 这里 % 是 mod 就是结果必须非负// 2. a%k%m!=a%m%k   // 第一点比较好解决// 第二点就是 a%km%m==a%m%km a%km%k=a%k%km 所以这个也就解决了 注:km=k*m

#include <iostream>
#include <math.h>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#include <algorithm>
#include <stdio.h>
#include <string.h>
using namespace std;
#define maxm 10010
#define maxn 1000010
bool vi[maxn];
int from[maxn],ch[maxn];
int dis[maxn];
void out(int u){if(u!=from[u]){out(from[u]);printf("%c",ch[u]);}}
int main()
{int n,m,k;int km;int i;int u,v,t;int ans,flag;while(scanf("%d %d %d",&n,&k,&m),n|k|m){memset(vi,0,sizeof(vi));km=k*m;for(i=0;i<=km;i++) from[i]=i;ans=((n+1)%k+k)%k;queue<int> Q;n=(n%km+km)%km;Q.push(n);vi[n]=1;dis[n]=0;flag=0;while(!Q.empty()){t=u=Q.front();Q.pop();if(u%k==ans){flag=1;break;}v=((u+m)%km+km)%km;if(!vi[v]){vi[v]=1;from[v]=t;dis[v]=dis[t]+1;ch[v]='+';Q.push(v);}v=((u-m)%km+km)%km;if(!vi[v]){vi[v]=1;from[v]=t;dis[v]=dis[t]+1;ch[v]='-';Q.push(v);}v=((u*m)%km+km)%km;if(!vi[v]){vi[v]=1;from[v]=t;dis[v]=dis[t]+1;ch[v]='*';Q.push(v);}v=((u%m)%km+km)%km;if(!vi[v]){vi[v]=1;from[v]=t;dis[v]=dis[t]+1;ch[v]='%';Q.push(v);}}if(!flag) printf("0\n");else{printf("%d\n",dis[t]);out(t);printf("\n");}}return 0;
}

转载于:https://www.cnblogs.com/372465774y/p/3208557.html

hdu 1104 Remainder相关推荐

  1. HDU 1104 Remainder (BFS)

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1104 题意:给你一个n.m.k,有四种操作n+m,n-m,n*m,n%m,问你最少经过多少步,使得最后 ...

  2. 杭电OJ分类题目(1)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(1) HDU Introduction HDU ...

  3. HDU-基础搜索总结

    Dfs: 1241 Oil Deposits 题解:https://blog.csdn.net/HeZhiYing_/article/details/81053035 1016 Prime Ring ...

  4. hdu Remainder

    这道题是道很明显的bfs题.因为对数论没什么研究 ,所以这道题目里的两个关键点并不知道,看了别人的题解才知道 . 1.为避免取模后出现负数,采用:x%y=(x%y+y)%y 2.全部采用对m*k取模后 ...

  5. hdu 1788 Chinese remainder theorem again 【crt的具体过程】

    题意: 中国剩余定理:  假设m1,m2,-,mk两两互素,则下面同余方程组:  x≡a1(mod m1)  x≡a2(mod m2)  -  x≡ak(mod mk)  在0<=<m1m ...

  6. HDU 1788 Chinese remainder theorem again

    题目链接 题意 : 中文题不详述. 思路 : 由N%Mi=(Mi-a)可得(N+a)%Mi=0;要取最小的N即找Mi的最小公倍数即可. 1 //1788 2 #include <cstdio&g ...

  7. HDU 6304 Chiaki Sequence Revisited

    题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=6304 多校contest1 Problem Description Chiaki is inter ...

  8. [恢]hdu 2117

    2011-12-23 08:04:50 地址:http://acm.hdu.edu.cn/showproblem.php?pid=2117 题意:问1/n的小数点后第m位是多少.高精度除法. 代码: ...

  9. [转] HDU 题目分类

    转载来自:http://www.cppblog.com/acronix/archive/2010/09/24/127536.aspx 分类一: 基础题:1000.1001.1004.1005.1008 ...

  10. HDU题目分类啊!!!

    分类一(详细): 分类二: 基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029.1032.1037.1040.10 ...

最新文章

  1. Eclipse中的插件安装
  2. php mvc和mvvm,mvvm模式和mvc模式的区别是什么
  3. vue——去除白色边框
  4. Windows SharePoint Services 3.0 Tools: Visual Studio 2005 Extensions发布1.1 CTP版本扩展
  5. atop用法_atop 使用详情
  6. django 已登陆用户的权限问题
  7. 大数据时代下的用户洞察:用户画像建立(ppt版)
  8. 教程篇(6.4) 02. 路由、会话和性能SLA ❀ SD-WAN ❀ Fortinet 网络安全架构师 NSE7
  9. kitserver 6.33 完全简体中文版补丁
  10. QT-C++ 注册机软件,生成机器码和注册码,支持授权时间
  11. 【爬虫】使用Scrapy框架进行爬虫详解及示例
  12. TTL(UART)信号和RS232信号 对比
  13. 使用python发邮箱遇到的问题
  14. 学而思网校python助手_学而思网校 - 主页
  15. [附源码]JAVA+ssm计算机毕业设计高铁乘坐舒适性在线调查及评价系统(程序+Lw)
  16. 联想计算机桌面字变大,带高分辨率屏幕的联想高分辨率笔记本电脑字体模糊的解决方案...
  17. android 短信发件箱,android将发送短信写入发件箱
  18. Studio One v4.6.2 x64 WiN 音乐制作编曲宿主软件下载
  19. OPENCV实现色带检测
  20. 西北乱跑娃 --- bottle框架部署pytorch模型

热门文章

  1. Sublime Text 中配置 Eslint 代码检查和自动修复
  2. 从陪练到赢家:人机博弈的六十年
  3. 多进程-multiprocess
  4. 【转载】C++操作符的优先级
  5. Android NDK 剥离符号信息
  6. CF1041B Buying a TV Set
  7. reboot 重启系统命令
  8. Vue3初始化需要安装的插件
  9. 识别数学公式_新品独家发布(免费送码)丨极度公式 数学公式 OCR 识别编辑 LaTeX 公式软件...
  10. uniapp对象怎么获取值_Uniapp使用GoEasy实现websocket实时通讯