zoukankan      html  css  js  c++  java
  • hdu Digital Square(广搜)

    题目:给出n,求出最小的m,满足m^2  % 10^k = n,其中k=0,1,2

    http://acm.hdu.edu.cn/showproblem.php?pid=4394 

    只要有一个x满足条件便行了

    我们可以初步发现,某个数个位确定,那么平方的最后一位肯定是确定的,那么如果后两们确定,那么平方的最后两们也是确定的,这可以通过乘法的规律得到

    那我们只需要BFS一下,不断地找满足最后指定位数的数,1位,2位,……直到找到第一个满足条件的。

    注意这里可能是100001这种情况

    所以记录当前数字大小,当前位置,可能暂时的高位为0,以后下一个添加的数为多少.


    // Time 0ms; Memory 316K
    #include<iostream>
    #include<queue>
    using namespace std;
    #define ll long long
    ll n,ans;
    struct node
    {
    	ll l,s;
    };
    void bfs()
    {
    	queue<node>q;
    	node x,y;
    	x.l=1;x.s=0;
    	q.push(x);
    	ans=-1;
    	while(!q.empty())
    	{
    		x=q.front();q.pop();
    		for(ll i=0;i<10;i++)
    		{
    			y.s=x.s+i*x.l;
    			y.l=x.l*10;
    			if((y.s*y.s)%y.l==n%y.l)
    			{
    				if((y.s*y.s)%y.l==n)
                    {
                        if(ans==-1 || ans>y.s) ans=y.s;
                        else if(ans==y.s) return;
                    }
    				q.push(y);
    			}
    		}
    	}
    	return;
    }
    int main()
    {
    	int t;
    	cin>>t;
    	while(t--)
    	{
    		cin>>n;
    		if(n==0)
    		{
    			cout<<"0"<<endl;continue;
    		}
    		bfs();
    		if(ans>0) cout<<ans<<endl;
    		else cout<<"None"<<endl;
    	}
    	return 0;
    }
    


  • 相关阅读:
    PHP CI分页类带多个参数
    PHP oracle分页
    PHP 防范IP攻击
    PHP 防范CC攻击
    PHP 防范xss攻击
    html input
    弹框样式
    php最快捷的插入数据,3000万仅需5秒
    phpcms 后台分页
    phpcms 用phpexcel导入导出excel
  • 原文地址:https://www.cnblogs.com/java20130726/p/3218180.html
Copyright © 2011-2022 走看看