POJ - 1426 - Find The Multiple(双入口DFS)

题目链接

题意:

给一个数n,让你找出一个只有1,0,组成的十进制数,要求是找到的数可以被n整除

题解:

用DFS是搜索 当前位数字 (除最高位固定为1),因为每一位都只有0或1两种选择

AC代码:

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
typedef unsigned long long ll;
const int maxn=230;
int n;
bool found;
void dfs(ll ans,int k){
    if(found)return;
    if(ans%n==0){
        printf("%llu\n",ans);
        found=1;
        return;
    }
    if(k==19)return;
    dfs(ans*10,k+1);
    dfs(ans*10+1,k+1);
}
int main(){
    while(scanf("%d",&n)&&n){
        found=0;
        dfs(1,0);
    }
    return 0;
}

全部评论

相关推荐

被普调的六边形战士很高大:项目经历貌似和专业或者求职方向没大关系?
点赞 评论 收藏
分享
三题看不懂四题不明白二题无法AC&nbsp;T=int(input())&nbsp;for&nbsp;_&nbsp;in&nbsp;range(T):&nbsp;n=int(input())&nbsp;s=input().split()&nbsp;k,mx=1,1&nbsp;for&nbsp;i&nbsp;in&nbsp;range(len(s)-1):&nbsp;if&nbsp;len(s[i])&lt;len(s[i+1]):&nbsp;k+=1&nbsp;elif&nbsp;len(s[i])==len(s[i+1]):&nbsp;if&nbsp;s[i]&lt;=s[i+1]:&nbsp;k+=1&nbsp;...
恭喜臭臭猴子:第二题用栈就行。合法的括号直接出栈了,剩下的是不合法的,肯定都得一个一个走。出入栈的过程中得记下进栈的括号的下标。最后栈里剩下的括号如果相邻两个的下标不连续,说明它们中间有一个合法的括号序列被出栈,结果加一
投递拼多多集团-PDD等公司10个岗位 > 拼多多求职进展汇总 笔试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务