一.题目描述
关于正整数n,编写一个程序,求得一个只由0和1构成的数,是n的整数倍(一个就好)
二.解题思路
这道题可以用搜索,深搜。但我还不大会用。
刚刚开始接触这类题,以后想出来了再补上。
我用的方法是慢慢的列举,从1,10,11,100,101,111,1000......这样子,想出来了一个循环可以解决
就是mod[0]=0;
则mod[i]=mod[i/2]*10+i%2;
这个式子就可以解决。
再判断是否可以整除就好了
三.代码
#include<iostream>
using namespace std;
int main()
{
long long mod[600001]={0};
int i,n;
while(cin>>n&&n!=0)
{
for(i=1;;i++)
{
mod[i]=mod[i/2]*10+i%2;
if(mod[i]%n==0)
{
cout<<mod[i]<<endl;
break;
}
}
}
return 0;
}
四.感想
提交时总是WA,后来知道是数组定小了。
而且我读题比较费时。。。。