博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU(4394),数论上的BFS
阅读量:7281 次
发布时间:2019-06-30

本文共 1409 字,大约阅读时间需要 4 分钟。

题目链接:

思路很巧妙,要找到m,可以这样思考,n的个位是有m的个位决定的,从0-9搜一遍,满足情况的话就继续搜索m的十位,这里的状态转移可以利用之前的m,因为m是在m的自身上增加的,这时,其实个位是已经满足情况了,而且,n的个位,十位,百位等等是很难单独取出来的,所以就直接取完后面的全部数字。

 

#include 
#include
#include
using namespace std;struct NUM{ long long num; int len; bool operator < (const NUM &a) const { return a.num < num; }};int main(){ int t; scanf("%d",&t); while(t--) { priority_queue
Q; int n; scanf("%d",&n); NUM a,next; a.len = 0; a.num = 0; Q.push(a); bool flag = false; while(!Q.empty()) { a = Q.top(); Q.pop(); if(a.num*a.num%(int)pow(10,a.len)==n) { flag = true; break; } a.len++; for(int i=0; i<=9; i++) { next = a; next.num +=i*(int)pow(10,a.len-1); //printf("%d %d\n",next.num,next.len); //printf("%d %d\n",next.num*next.num%(int)pow(10,next.len),n%(int)pow(10,next.len)); if(next.num*next.num%(int)pow(10,next.len)==n%(int)pow(10,next.len)) Q.push(next); } } if(flag) printf("%d\n",a.num); else printf("None\n"); } return 0;}

 

转载于:https://www.cnblogs.com/TreeDream/p/5712038.html

你可能感兴趣的文章
python中取整的几种方法
查看>>
css中margin上下外边距重叠问题
查看>>
祝母亲大人福如东海长流水,寿比南山不老松
查看>>
基于SolidWorks 二次开发专用CAD系统
查看>>
【HDOJ】1069 Monkey and Banana
查看>>
Linux下安装opencv with-ffmpeg解决无法读取视频的问题
查看>>
python中的随机函数
查看>>
lockf
查看>>
洛谷P2697 宝石串
查看>>
css3 在线编辑工具 连兼容都写好了
查看>>
移动端 Retina屏border实现0.5px
查看>>
ios 自定义NSError
查看>>
DBCP连接池
查看>>
4.2 time & datetime 模块
查看>>
m4-第四次考试
查看>>
基于NiosII的TRDB-LTM控制器IP核的设计
查看>>
Skia引擎API整理介绍
查看>>
python file operations
查看>>
spring的注入
查看>>
拦截导弹 (NYOJ—79) 最长字串问题 (NYOJ—17)
查看>>