Time Limit: 1000MS | Memory Limit: 10000K | |||
Total Submissions: 19409 | Accepted: 7868 | Special Judge |
Description
Input
Output
Sample Input
2 6 19 0
Sample Output
10 100100100100100100 111111111111111111
题意:找出被n整除的任意一个每一位中只有1和0的数
方法:直接bfs从小到大按位遍历只有1和0的数,由于题目输入一个n,可以打表
//poj1426_bfs #include<iostream> #include<cstdlib> #include<cstdio> #include<cstring> #include<algorithm> #include<queue> using namespace std; const int maxn=100020; int n; long long bfs() //注意要用long long { queue<long long> q; q.push(1); while(!q.empty()){ long long now=q.front(); q.pop(); if(now%n==0) return now; q.push(now*10); //遍历只有每一位上0和1的数 q.push(now*10+1); } return -1; } int main() { while(cin>>n,n){ cout<<bfs()<<endl; } return 0; }
//表中数据来自bfs #include<iostream> #include<cstdlib> #include<cstdio> #include<cstring> #include<algorithm> #include<queue> using namespace std; const int maxn=100020; int n; long long a[]={ //注意long long 1,10,111,100,10, 1110,1001,1000,111111111,10, 11,11100,1001,10010,1110, 10000,11101,1111111110,11001,100, 10101,110,110101,111000,100, 10010,1101111111,100100,1101101,1110, 111011,100000,111111,111010,10010, 11111111100,111,110010,10101,1000, 11111,101010,1101101,1100,1111111110, 1101010,10011,1110000,1100001,100, 100011,100100,100011,11011111110,110, 1001000,11001,11011010,11011111,11100, 100101,1110110,1111011111,1000000,10010, 1111110,1101011,1110100,10000101,10010, 10011,111111111000,10001,1110,11100, 1100100,1001,101010,10010011,10000, 1111111101,111110,101011,1010100,111010, 11011010,11010111,11000,11010101,1111111110, 1001,11010100,10000011,100110,110010, 11100000,11100001,11000010,111111111111111111,100, 101,1000110,11100001,1001000,101010, 1000110,100010011,110111111100,1001010111,110, 111,10010000,1011011,110010,1101010, 110110100,10101111111,110111110,100111011,111000, 11011,1001010,10001100111,11101100,1000, 11110111110,11010011,10000000,100100001,10010, 101001,11111100,11101111,11010110,11011111110, 11101000,10001,100001010,110110101,100100, 10011,100110,1001,1111111110000,11011010, 100010,1100001,11100,110111,11100, 1110001,11001000,10111110111,10010,1110110, 1010100,10101101011,100100110,100011,100000, 11101111,11111111010,1010111,1111100,1111110, 1010110,11111011,10101000,10111101,111010, 1111011111,110110100,1011001101,110101110,100100, 110000,100101111,110101010,11010111,11111111100, 1001111,10010,100101,110101000,1110, 100000110,1001011,1001100,1010111010111,110010, 11101111,111000000,11001,111000010,101010, 110000100,1101000101,1111111111111111110,111000011,1000, 10010001,1010,11010111,10001100,111110, 111000010,11011111011,10010000,100111,101010, 110100011,10001100,10011,1000100110,11011010, 1101111111000,10000011,10010101110,1110111,1100, 100111011,1110,1001111001,100100000,11111111100, 10110110,11001101,1100100,10000100011,1101010, 111111,1101101000,111110011,101011111110,100110, 1101111100,101010111,1001110110,1111111,1110000, 111101,110110,100111110111,10010100,11000010, 100011001110,1000000001,111011000,1111100001,1000, 110001001,111101111100,11111001,110100110,1000110, 100000000,101001,1001000010,10101,100100, 10111101111,1010010,10001101,111111000,1000110, 111011110,1011111111,110101100,100100011,11011111110, 11111,111010000,10101,100010,1100, 1000010100,110111101,1101101010,11111010111,1001000, 101000111,100110,10010111011,1001100,110010, 10010,1011101,11111111100000,1100110001,11011010, 100110111,1000100,110000111,11000010,110111110, 111000,1111011111111111111,1101110,10010101101,11100 }; int main() { while(cin>>n,n){ cout<<a[n-1]<<endl; } return 0; }