暴力不解释。
#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <string>
#include <deque>
#include <stack>
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <limits.h>
#include <time.h>
#include <string.h>
using namespace std;
int lowbit(int t){return t&(-t);}
int countbit(int t){return (t==0)?0:(1+countbit(t&(t-1)));}
int gcd(int a,int b){return (b==0)?a:gcd(b,a%b);}
#define LL long long
#define PI acos(-1.0)
#define N 1010
#define MAX INT_MAX
#define MIN INT_MIN
#define eps 1e-8
#define FRE freopen("a.txt","r",stdin)
int main(){
char s[30];
char ss[30];
int n;
while(scanf("%s%d",s,&n)!=EOF){
int i,j,k;
int cnt;
int len=strlen(s);
int sum=0;
for(i=0;i<len;i++)sum=sum*2+s[i]-'0';
if( sum % n == 0){printf("%s\n",s);continue;}
else k=( sum / n + 1 )*n;
while(1){
int cur=k;//
cnt=0;
while(cur){
ss[cnt++]=cur%2+'0';
cur>>=1;
}
//ss[cnt]='\0';
int l=0,r=cnt-1;
while(l<len && r>=0){
if(s[l]==ss[r]){
l++;
r--;
}
else
r--;
}
if(l>=len)break;
k+=n;
}
for(i=cnt-1;i>=0;i--)
printf("%c",ss[i]);
puts("");
}
return 0;
}