因为要求十进制数字中只能由0 1,这个数字从1 10 11 110 111…可看出来,均可从前一个数字*10 or *10+1得出;
那么就通过广度搜索遍历得出数字,然后再判断是否符合整除条件即可。
为了避免超时,采用打表方式进行先行计算。
坑:
最开始使用c++的编译环境,
#include#include using namespace std; int n; long long a[205]; void bfs() { queue Q; for(int i=1; i<=201; i++) { Q.push(1); while(!Q.empty()) { long long b=Q.front(); if(b%i==0) { a[i]=b; break; } Q.pop(); Q.push(b*10);//+0 Q.push(b*10+1);//+1 } } } int main() { bfs(); while(cin>>n&&n) { cout< 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)