HDU-4394 Digital Square(DFS)
来源:互联网 发布:投稿被怀疑数据造假 编辑:程序博客网 时间:2024/05/22 11:11
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4394
Digital Square
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Problem Description
Given an integer N,you should come up with the minimum nonnegative integer M.M meets the follow condition: M2%10x=N (x=0,1,2,3....)
Input
The first line has an integer T( T< = 1000), the number of test cases.
For each case, each line contains one integer N(0<= N <=109), indicating the given number.
For each case, each line contains one integer N(0<= N <=109), indicating the given number.
Output
For each case output the answer if it exists, otherwise print “None”.
Sample Input
332125
Sample Output
None115
数字n从个位开始的数字分别为n0,n1,n2……
模拟乘法运算,观察可得:
n0=e^2%10
n1=(2*d*e+e^2/10)%10注意进位
n2=(2*c*e+d^2+(2*d*e+e^2/10)/10)%10
=[2*c*e+(100*d^2+10*2*d*e+e^2)/100]%10
={2*c*e+[(de)^2]/100}%10
同理可得:n3,n4……
#include <cstdio>#include <cstring>#include <algorithm>//#define LOCALusing namespace std;const __int64 INF=1<<30;__int64 n,ans;int len,m;int num[10];void DFS(__int64 pre,__int64 temp,int pos)//①pre=10^pos,用于进位②temp表示当前已经确定的后pos位数字③pos表示第pos位数{ if(len==pos) { ans=min(ans,temp); return; } for(int i=0;i<=9;++i) { if(num[pos]==(temp*temp/pre+m*i%10)%10)//如果第pos位数相符,则计算下一位 DFS(10*pre,temp+i*pre,pos+1); }}int main(){#ifdef LOCALfreopen("input.txt","r",stdin);//freopen("output.txt","w",stdout);#endif int T; scanf("%d",&T); while(T--) { scanf("%I64d",&n); __int64 temp=n; len=0; while(temp)//计算n的每一位数字 { num[len++]=temp%10; temp/=10; } ans=INF;//给答案附最大值 for(int i=0;i<=9;++i) if(num[0]==i*i%10) { m=2*i; DFS(10,i,1); } if(ans==INF) printf("None\n"); else printf("%d\n",ans); } return 0;}
0 0
- HDU-4394 Digital Square(DFS)
- (dfs) hdu 4394 Digital Square
- hdu 4394 - Digital Square (dfs or bfs)
- hdu 4394 Digital Square(搜索:DFS)
- Digital Square (DFS)
- HDOJ 题目4394 Digital Square(DFS)
- hdu 4394 Digital Square
- hdu 4394 Digital Square
- HDU 4394Digital Square
- Digital Square(HDU-4394)
- HDU 4394 Digital Square (BFS)
- hdu 4394 Digital Square(bfs)
- DFS+数学:Digital Square
- HDU 4394 - Digital Square(BFS+乘法原理)
- hdu 4394 Digital Square 记忆化搜索
- hdu Digital Square(广搜)
- Digital Square HDU
- hdu 1518 Square(DFS)
- NYOJ12 喷水装置(二)【贪心】
- rman 命令行,直接startup 起db
- bind1st,bind2nd,not1,not2
- BZOJ2456 Mode & zju2132 The Most Frequent Number
- 吉他泛音分析
- HDU-4394 Digital Square(DFS)
- 黑马程序员——正则表达式
- 如何高效的工作
- Python3伪装浏览器爬虫读取网页内容
- 理解PHP对象注入
- Android Nexus6 和iPhone6内置应用对比分析
- 欢迎使用CSDN-markdown编辑器
- 解决Ubuntu下无法启动Weka GUI
- 手动创建复杂格式的长微博