zoukankan      html  css  js  c++  java
  • poj1426 Find The Multiple

    Find The Multiple
    Time Limit: 1000MS   Memory Limit: 10000K
    Total Submissions: 14622   Accepted: 5938   Special Judge

    Description

    Given a positive integer n, write a program to find out a nonzero multiple m of n whose decimal representation contains only the digits 0 and 1. You may assume that n is not greater than 200 and there is a corresponding m containing no more than 100 decimal digits.

    Input

    The input file may contain multiple test cases. Each line contains a value of n (1 <= n <= 200). A line containing a zero terminates the input.

    Output

    For each value of n in the input print a line containing the corresponding value of m. The decimal representation of m must not contain more than 100 digits. If there are multiple solutions for a given value of n, any one of them is acceptable.

    Sample Input

    2
    6
    19
    0

    Sample Output

    10100100100100100100111111111111111111

    就是找倍数,bfs 这题 就是宽搜,我打/*号的是深搜的代码 ,但是很慢,也过不了,很容易就RUNTIME去了!

    #include<iostream>
    #include<stdio.h>
    #include<stack>
    #include<string.h>
    using namespace std;
    stack<int > q;
    struct hal{
    int x,leave,floor,front;
    
    }l[300000];
    int visit[300];
    int n,re;
    bool init(int num,int flag)
    {
    	/*
    	l[num].x=flag;
    	if(flag==0)
    	{
    
    		l[num].leave=(l[num>>1].leave*10)%n;
    		if(visit[l[num].leave])
    			return false;
    		visit[l[num].leave]=1;
    		l[num].floor=l[num>>1].floor+1;
    		if(l[num].leave==0)
    		{
    			re=num;
    			return true;
    		}
    		if(l[num].floor>200)
    			return false;
    		
    	}
    	else if(flag==1)
    	{
    		l[num].leave=(l[num>>1].leave*10+1)%n;
    		if(visit[l[num].leave])
    			return false;
    		visit[l[num].leave]=1;
    		l[num].floor=l[num>>1].floor+1;
    		if(l[num].leave==0)
    		{
    			re=num;
    			return true;
    		}
    		if(l[num].floor>200)
    			return false;
    		
    	}
    	else if(flag==-1)
    	{
    	
    		l[num].leave=1;
    		l[num].x=-1;
    		l[num].floor=1;
    	}
    	
    	
    	if(init(num<<1,0))
    		return true;
    	if(init(num<<1|1,1))
    		return true;
    	return false;
    	*/
    	int t,w,j;
    	 t=w=1;
    	l[t].x=-1;
    	l[t].leave=1;
    	l[t].floor=1;
    	l[t].front=-1;
    	while(t<=w)
    	{
    		for(j=0;j<=1;j++)
    		{
    			l[++w].floor=l[t].floor+1;
    			l[w].front=t;
    			l[w].x=j;
    			if(j==0)
    				l[w].leave=(l[t].leave*10)%n;
    			else
    				l[w].leave=(l[t].leave*10+1)%n;
    			
    			if(visit[l[w].leave])
    			{
    				w--;
    				continue;
    			
    			}
    			visit[l[w].leave]=1;
    	
    			if(l[w].leave==0)
    			{
    				re=w;
    				return true;
    			}
    			if(l[w].floor>200)
    			{
    			
    				continue;
    				
    			}
    		}
    		t++;
    	}
    	return false;
    }
    bool bfs(int e)
    {
    	while(l[e].x!=-1)
    	{
    		q.push(l[e].x);
    		e=l[e].front;
    	}
    	printf("1");
    	while(!q.empty())
    	{
    		printf("%d",q.top());
    		q.pop();
    	}
    	printf("
    ");
    	return true;
    } 
    int main ()
    {
    	
    	while(scanf("%d",&n)!=EOF&&n)
    	{
    		memset(visit,0,sizeof(visit));
    		visit[1]=1;
    		l[1].leave=-1;
    		init(1,-1);
    		//printf("%d",re);
    		bfs(re);
    	}
    	return 0;
    }


     

     

  • 相关阅读:
    asp.net发布到IIS中出现错误:处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
    System.Core, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes”
    禁止tableview 像上滑动
    IOS 贝塞尔曲线切割圆角
    头像图片裁剪
    iOS 限制TextField输入长度
    根据经纬度反向地理编译出地址信息(如果报错:Error Domain=kCLErrorDomain Code=8 "(null)")
    空白页界面
    NSPhotoLibraryAddUsageDescription解决办法
    IOS字符串截取保留小数点后两位
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3167745.html
Copyright © 2011-2022 走看看