题目大意是给出一个数n,找出一个数要求是n的倍数,并且这个数的十进制只由1和0组成,要求输出任意一个满足该条件的m 可以用深搜 从1开始每次对他*10和*10+1查找能否被n整除 这个数应该是longlong范围内(不要问为什么 我猜的) 所以根据longlong范围 最多乘19次#include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<queue> using namespace std; #define maxn 20 bool ok; void dfs(long long m,int n,int k) { if(k==19)return; if (ok)return ; if(m%n==0) { printf("%lld\n",m); ok=true; return ; } dfs(m*10,n,k+1); dfs(m*10+1,n,k+1); } int main() { int n; while(~scanf("%d",&n)) { if(n==0)break; ok=false; dfs(1,n,0); } return 0; }
POJ1426 Find The Multiple(E)
最新推荐文章于 2022-02-19 09:15:00 发布