HDU 4394 BFS
2024-10-01 10:38:38
M2%10x=N
(x=0,1,2,3....)
给出N。找到最小的满足条件的M
因为:N的个位仅仅由M的个位决定。N十位由M的个位和十位决定,N的百位由M的个位十位百位决定。以此类推
全部从个位開始搜索满足条件的数字就可以
#include"stdio.h"
#include "string.h"
#include "math.h"
#include "queue"
using namespace std;
__int64 flag,n; __int64 make(__int64 x,__int64 dit,__int64 num,__int64 i)
{
__int64 y,now,j;
y=1;
for (j=1;j<dit;j++)
y*=10; now=x+y*i;
if ((now*now%(y*10)/y)==num) return now; return -1;
}
void bfs()
{
queue<__int64>q;
__int64 dit,i,cnt,x,now,num;
q.push(0);
dit=0;
flag=-1;
while (!q.empty())
{
cnt=q.size();
num=n%10;
dit++;
n/=10;
while (cnt--)
{
x=q.front();
q.pop();
for (i=0; i<=9; i++)
{
now=make(x,dit,num,i); // x之前所生成的数字,dit当前搜索到第几位,应该位应该匹配的数字,搜索当前位数字为i
if (now!=-1)
{
q.push(now);
if (n==0)
{
if (now<flag|| flag==-1)
flag=now;
}
}
}
}
if (flag!=-1) return ; }
}
int main()
{
__int64 t;
scanf("%I64d",&t);
while (t--)
{
scanf("%I64d",&n);
if (n==0)
{
printf("0\n");
continue;
}
bfs();
if (flag==-1) printf("None\n");
else printf("%I64d\n",flag); }
return 0;
}
最新文章
- Mysql学习笔记(三)对表数据的增删改查。
- Extjs3 + swfUpload实现多文件上传控件
- cocos2dx loading界面 预加载资源 与 资源释放
- TYVJ P1063 数字串 Label:双指针 线性扫描
- php判断用户浏览器类型是否为微信浏览器
- cocos2d-x 使用Lua
- 每天一个linux命令(1):which命令(转)
- Mysql的列索引和多列索引(联合索引)
- Flume NG中的Kafka Channel
- How Many Shortest Path
- windows下cmd导入与导出mysql 数据库
- 201521123059 《Java程序设计》第十四周学习总结
- ASP.Net Core on Linux (CentOS7) 共享第三方依赖库部署
- Python变量和常量
- git 创建删除分支
- Centos yum国内源及配置含义
- Windows Server 2008 R2 如何关闭防火墙
- 小程序学习-iPhone X适配
- Linux常用命令详解-目录文件操作命令
- WinForm 多语言处理
热门文章
- 国内物联网平台初探(三) ——QQ物联&#183;智能硬件开放平台
- 2.2Shiro架构
- day63-webservice 04.JaxWsServerFactoryBean和SOAP1.2
- shp系列(二)——利用C++进行shp文件的读(打开)
- B - Even Odds
- Solr.NET快速入门(二)
- LCA 离线的Tarjan算法 poj1330 hdu2586
- 腾讯云TrustAsia DV SSL CA证书的申请及使用
- 杭电 1040 As Easy As A+B 【排序】
- RxSwift學習教程之基礎篇