首页 > 其他分享 >DFS+余数运用

DFS+余数运用

时间:2024-04-17 21:23:42浏览次数:29  
标签:ans DFS length 添加 495 余数 运用 now

链接:https://ac.nowcoder.com/acm/contest/77231/C
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
Special Judge, 64bit IO Format: %lld

题目描述

小红来到了红魔馆。众所周知,红魔馆的馆主是一只 495 岁的吸血鬼,所以她非常喜欢 495 这个数。
现在,小红拿到了一个正整数,她想在这个正整数的结尾增加尽可能少的数字,使得该数字变成 495 的倍数。请你给出任意一个添加方案。

输入描述:

一个正整数 n
1 ≤ n ≤ 1e18

输出描述:

如果给定是正整数本身就是 495 的倍数,请输出 -1。
否则输出一个数字串,代表将该数字串添加到原数的结尾。有多解时输出任意即可,你只需要保证该数字串长度尽可能短。

示例1

输入

49

输出

5

说明

只需要添加一个 5 即可。

示例2

输入

9

输出

90

说明

添加 90 后,990 是 495 的倍数。









解答

  • 误区:找每个位上数字相加 % 18 == 0 的数,因为看到 495 各个位上相加为 18
  • 这种类型思路:将这个数 % 495,余数进行添加
  • 比如在后面添加一个数,看它是否是 495 倍数,也就是余数是否为 0 ,而假设不为 0 ,也就是余数乘 10 + 这个数,因为前面整除部分相当于乘 10
  • 所以就判断是否加一个数这个余数是否为 0 ,直接 DFS
#include <iostream>
using namespace std;
string ans = "100000000000000";
typedef long long LL;

void dfs(int yu, string now) 
{
    if (yu == 0) 
    {
        if (now.length() < ans.length()) ans = now;
        return;
    }

    if (now.length() > ans.length()) return;

    for (int i = 0; i <= 9; i++) 
    {
        dfs((yu * 10 + i) % 495, now + (char)('0' + i));
    }
}

int main()
{
    LL n;
    cin >> n;

    n %= 495;
    if (n == 0) 
    {
        cout << -1 << endl;
        return 0;
    }

    dfs( n, "");

    cout << ans << endl;
    return 0;
}

标签:ans,DFS,length,添加,495,余数,运用,now
From: https://www.cnblogs.com/xingzhuz/p/18141790

相关文章

  • 用海豚调度器定时调度从Kafka到HDFS的kettle任务脚本
    在实际项目中,从Kafka到HDFS的数据是每天自动生成一个文件,按日期区分。而且Kafka在不断生产数据,因此看看kettle是不是需要时刻运行?能不能按照每日自动生成数据文件?为了测试实际项目中的海豚定时调度从Kafka到HDFS的Kettle任务情况,特地提前跑一下海豚定时调度这个任务,看看到底什么......
  • 肖sir__app实战运用
    一、打开模拟器 二、cmd中打开dos命令adb connect  127.0.0.1:62001   三、安装测试包adb install  D:\app\baiduyuedu_3760.apkE:\dcs\two\app\mojibase.apk  四、打开appium    五、( 定位元素没有xpath的就删除原有uiautomatorviewer.......
  • const在类和函数之间的运用
    const在类和函数之间的运用第一种情况简单来说就是如果声明了一个const类但是调用了非const的方法.那么编译会不通过->const类只能调用const方法,非const类就都可以调用示例代码:宏定义:#pragma#ifndef__CONST_OBJECT__#define__CONST_OBJECT__​#include<iostream>#incl......
  • 用海豚调度器定时调度从Kafka到HDFS的kettle任务脚本
    在实际项目中,从Kafka到HDFS的数据是每天自动生成一个文件,按日期区分。而且Kafka在不断生产数据,因此看看kettle是不是需要时刻运行?能不能按照每日自动生成数据文件?为了测试实际项目中的海豚定时调度从Kafka到HDFS的Kettle任务情况,特地提前跑一下海豚定时调度这个任务,看看到底什么......
  • Perm 排列计数——Lucas&dfs
    思路:这道题给出的公式看明白后即可得出正解,我们可以把他想象成一颗二叉树,任意一个点的任意一个子孙一直除以2后最终都会到达一终点,终点则为以该点为根的子树的最小值。so——我们可以将根节点作为最后终点即最小值1,设有n个点,左子树选m个点,剩下的给右子树,左子树组合数即C(n-1,m),a......
  • DFS
    DFSDFS指数型枚举模板#include<iostream>usingnamespacestd;intarr[20];intn;voiddfs(intx){if(x>n){//出口DFS位置大于选择的nfor(inti=1;i<=n;++i){if(arr[i]==1){//如果标志为1的被选中的打印出......
  • dfs序专题训练
    DFS序专题NC13611https://ac.nowcoder.com/acm/problem/13611题意:要求树上任意两点相同颜色之间的路径上的点也是相同颜色,k种颜色,求方案数Solution:原问题等价于将树分割成若干连通块且相互之间颜色不同其实是道数论题。题意可以转化为将树分割为不超过\(k\)个连通块,每个连......
  • ETL中如何运用好MQ消息集成
    一、ETL的主要作用ETL(Extract, Transform, Load)是数据仓库中的关键环节,其主要作用是将数据从源系统中抽取出来,经过转换和清洗后加载到数据仓库中。具体而言:Extract(抽取):从不同的数据源(如数据库、文件、API等)中提取数据。Transform(转换):对抽取的数据进行清洗、加工、计算等操作,......
  • 简单聊聊,聚合支付+分账系统体系的运用
    聚合支付分账体系的意义在哪里呢?前端可使用聚合支付通道来进行收款,后端为了资金的快速有效的分配,那么分账系统是比较好的选择,今天我们来着重讲讲分账系统。分账账户体系-自动分账,减少人工支出,降低二清风险!!!在数字化浪潮下第三方支付价值凸显,大大提升资金流与信息流流转效率,成......
  • P9669 [ICPC2022 Jinan R] DFS Order 2
    P9669[ICPC2022JinanR]DFSOrder2树形dp+回退背包dfs的过程时走到\(u\),如果走进一个子树后要回到\(u\),那么这个子树一定全部遍历了一遍。所以方案数会跟子树遍历的方案数有关,可以预处理。设\(h_u\)表示\(u\)子树的遍历方案,假如\(u\)有\(m\)个儿子,那么有\(h_u=......