标签:lang const val contains 计算 检查 return hose ogr
题目:
Input
Output
Sample Input
2 6 19 0
Sample Output
10 100100100100100100 111111111111111111
这道题看似麻烦,实际上直接暴力搜索就行了。。。
利用状态压缩搜索2^20以内的所有二进制数(之所以次数是20,是因为再大一些就超过long long的范围而
溢出了,实际上这个范围已经很多余了,很小的数就能满足条件),然后每个都换成二进制表示,这个二进制
表示直接当作十进制数就是m,然后检测每一个m是否符合要求,找到符合要求的输出就行了。
代码:
1 #include<iostream> 2 using namespace std; 3 int line[100]={0}; //倍数不会大于100 4 const int LEN=20; 5 6 int main(){ 7 int n=0; 8 9 cin >>n; 10 while(n!=0){ 11 //状态压缩 12 for(long long i=1;i<(2<<LEN);i++){ 13 for(int j=0;j<LEN;j++){ 14 line[j]=(i>>j)&1; 15 } 16 int len=LEN-1; //m的长度 17 while(line[len]==0&&len>=0){ 18 len--; //找到m的长度 19 } 20 long long m=0; 21 for(int j=len;j>=0;j--){ 22 m=m*10+line[j]; //计算m 23 } 24 //检查m是不是n的倍数 25 if(m%n==0){ 26 cout <<m<<endl; 27 break; 28 } 29 } 30 cin >>n; 31 } 32 33 system("pause"); 34 return 0; 35 }
标签:lang const val contains 计算 检查 return hose ogr
原文地址:https://www.cnblogs.com/shiyu-coder/p/13140086.html