BFS+余数判重+数论 hdu-1664-Different Digits

GPT-4与ChatGPT实战:从API调用到应用开发完整指南 大模型应用开发已成为当前技术领域的热点,其核心在于如何高效利用预训练模型的能力解决实际问题。从技术原理上看,开发者通过API调用访问云端大模型,无需深入底层算法即可快速集成AI功能。这项技术的核心价值在于大幅降低了AI应用开发门槛,使开发者能聚焦于提示工程、外部知识库集成和函数调用等关键环节,构建智能对话、内容生成、自动化流程等应用。在实际工程实践中,掌握提示工程技巧是提升模型输出质量与控制成本的关键,而检索增强生成技术则能有效结合私有知识库,解决模型幻觉问题。本书围绕GPT-4和ChatGPT,系统讲解了 阅读详情

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=1664

题目意思:

给一个n,让你找出含不同数字最少的n的倍数,如果含不同数字相同,则输出最小的。

解题思路:

根据数论里面的知识点:

对于任意的整数n,必然存在一个由不多于两个的数来组成的一个倍数。因为a,aa,aaa……取n+1个,则由鸽笼原理,必有两个模n余数相同,相减即得n的倍数m。而m只由a、0组成。

对于余数相同的情况,数位少的含不同数字的个数肯定不超过数位多的,所以可以用余数判重。

先扫描一位的情况,然后在考虑两位的情况。

代码:

#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<list>
#include<queue>
#define eps 1e-6
#define INF 0x1f1f1f1f
#define PI acos(-1.0)
#define ll __int64
#define lson l,m,(rt<<1)
#define rson m+1,r,(rt<<1)|1
#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;
#define Maxn 70000

/*
freopen("data.in","r",stdin);
freopen("data.out","w",stdout);
*/

bool vis[Maxn];
struct Inf
{
   int m,pre,d,cnt;
}myq[Maxn]; //余数不同的入队,最多只有65535中情况

int n,save[5],nn,mm;
string ans,temp;

void gettemp(int x) //递归输出,免得用string超时
{
   if(x==-1)
      return ;
   gettemp(myq[x].pre);
   temp+=(myq[x].d+'0');
   return ;
}

void bfs()
{
   memset(vis,false,sizeof(vis));
   int head=0,tail=-1;

   for(int i=1;i<=nn;i++)
   {
      if(!save[i]) //第一位
         continue;
      Inf cur;
      cur.pre=-1;
      cur.d=save[i];
      cur.m=save[i]%n;
      cur.cnt=1;
      vis[cur.m]=true;
      myq[++tail]=cur;
   }

   while(head<=tail)
   {
      int h=head;head++;
      if(myq[h].cnt>mm) //剪枝,不可能小于ans.
         return ;
      if(!myq[h].m) //如果存在,则跳出,后面肯定比自己大,不管
      {
         temp="";
         gettemp(h);
         if(myq[h].cnt<mm) //位数少
         {
            ans=temp;
            mm=myq[h].cnt;
         }
         else if(myq[h].cnt==mm) //位数相同,值小
         {
            if(temp<ans)
               ans=temp;
         }

         return ;
      }

      for(int i=1;i<=nn;i++)
      {
         int xx=(myq[h].m*10+save[i])%n;
         if(vis[xx]) //余数判重
            continue;
         vis[xx]=true;
         Inf tt;
         tt.m=xx,tt.cnt=myq[h].cnt+1;
         tt.d=save[i],tt.pre=h; //记录前一个,递归输出
         myq[++tail]=tt;
      }
   }

}


int main()
{
   while(scanf("%d",&n)&&n)
   {
      nn=1;
      mm=INF;
     // printf(":%d\n",mm);
      for(int i=1;i<=9;i++)
      {
         save[1]=i;
         bfs();
      }
      //printf("mm:%d\n",mm);
      //cout<<ans<<endl;
      if(mm!=INF) //只用一个数字就可以得到,
      {
         cout<<ans<<endl;
         continue;
      }
      nn=2;
      for(int i=0;i<=9;i++)
      {
         save[1]=i;
         for(int j=i+1;j<=9;j++)
         {
            save[2]=j;
            bfs(); //必须用两个
         }
      }
      cout<<ans<<endl;

   }
   return 0;
}






FPGA AXI DDR3读写时序调试与FIFO缓存实战解析 本文深入解析FPGA中AXI协议与DDR3的读写时序调试,重点探讨FIFO缓存在数据流控制中的关键作用。通过实战案例详细讲解突发传输中的地址对齐、数据分片等常见问题,并提供状态机设计、仿真波形分析和性能优化技巧,帮助开发者高效解决高速数据存储场景下的时序同步与数据一致性问题。 阅读详情

相关推荐

Neo4j Desktop新手必看:3分钟搞定CSV数据导入(附常见报错解决方案)

本文详细介绍了在Neo4j Desktop中高效导入CSV数据的三种主流方法,包括图形化界面操作、命令行批量导入和Python驱动编程导入,并提供了常见报错解决方案和性能优化技巧,帮助新手快速构建知识图谱。

lambda的博客 648

poj 1465 bfs+余数判重

题意:用给定的m个数字,组成最小的n的倍数 解法:bfs+余数判重 当遍历到已经使用过的余数,就不用加入队列了。 a%n=e; (a*10+b)%n = ? a*10%n + b%n =e*10%n+b%n =(e*10+b)%n

caoyu01 534

将CityScapes数据集转换为COCO格式的实例分割数据集

##¥##2019年结束前最后两小时,写出本年度最后一篇博客,不是博主没地方去跨年,实在是Coding乐趣无穷ahhhh ##¥## COCO数据集是研究实例分割的通用数据集,但是针对道路环境的数据较少,对于自动驾驶和移动机器人的应用并不适配。而提供道路环境的实例分割数据的数据集目前有KITTI、CityScapes、Apllo等,CityScapes算是应用较广,数据质量较高的一个,所以,本篇...

陆羽飞的博客 9940

hdu 2579 余数判重

If you have solved the problem Dating with girls(1).I think you can solve this problem too.This problem is also about dating with girls. Now you are in a maze and the girl you want to date with is als

旺旺的博客 341

保姆级教程:在摩尔线程MTT S80上快速部署Ollama运行DeepSeek R1模型(附性能测试)

本文提供了一份详细的保姆级教程,指导用户在摩尔线程MTT S80显卡上部署Ollama并运行DeepSeek R1模型。内容涵盖从驱动安装、Docker环境配置到模型拉取、性能测试的全流程,并分享了实测数据与优化技巧,旨在帮助开发者快速在国产GPU平台上实现高效的大语言模型推理。

weixin_29091837的博客 525

Codex智能体从零搭建:环境配置、代码管理与MCP扩展实战

AI智能体(Agent)作为连接大语言模型与实际应用的关键技术,通过感知、决策与执行框架,将AI能力融入具体工作流。其核心原理在于利用提示工程、上下文管理与工具调用,将自然语言指令转化为可执行操作。在软件开发领域,AI智能体能够显著提升代码生成、项目管理和自动化任务的效率。通过Model Context Protocol(MCP)等标准化协议,智能体可以安全、结构化地集成外部工具与服务,实现能力扩展。本文聚焦于Codex这一AI驱动的代码助手平台,详细解析其环境配置、代码索引、记忆系统等核心模块,并深入探讨

weixin_34220179的博客 593

POJ 1465 Multiple BFS + 余数判重

题意是: 给出一个 0 - 4999 的数 N  ,在给出 M 个0-9的数,判断这M个数字能不能构成一个数是N的倍数,如果有输出最小的,如果没有输出0。    初次做的 时候犯了很多错误。。。CE TlE 等等各种,  初次做这个题目的时候用了 long long 结果就悲剧了。。。 想了想 long long 明显hold 不住 因为结果可能很大。 不信的话 跑一下这组数据  4999

OceanLight的专栏 2525

从零搭建运行Pytorch版pointNet++模型全流程及个性化数据集训练测试可视化

从零搭建运行Pytorch版pointNet++模型全流程及个性化数据集训练测试可视化

funfan的博客 9433

poj 1465 Multiple(bfs+余数判重)

题意:给出m个数字,要求组合成能够被n整除的最小十进制数。 分析:用到了余数判重,在这里我详细的解释了。其它就没有什么了。 1 #include<cstdio> 2 #include<cmath> 3 #include<cstring> 4 #include<queue> 5 #include<algor...

aizhengcuo9261的博客 213

RK3588部署YOLOv11与RKNN全流程教程

本文详细介绍了在RK3588开发板上部署YOLOv11目标检测模型的全流程。主要内容包括:PC端CUDA/cuDNN环境配置、Anaconda虚拟环境搭建、RKNN Toolkit2安装;YOLOv11模型从PyTorch到ONNX再到RKNN的格式转换;以及RK3588开发板的系统配置、RKNPU驱动安装和最终推理实现。教程提供了完整的代码示例,帮助开发者快速在边缘设备上实现高效的AI推理应用,涵盖从环境准备到实时检测的全套解决方案。

FJN110的博客 376

PCL 加权局部最优投影(WLOP)简化算法

WLOP算法是一种点云重采样方法,通过迭代优化实现点云均匀化和特征保留。算法包含数据项(加权平均位置保持几何特征)和正则化项(排斥邻近点实现均匀分布)两部分。代码实现基于PCL库,通过KD树加速邻域搜索,使用高斯权重函数计算点位置更新。参数包括输出点比例、邻域半径、正则化权重和迭代次数。该算法不依赖网格信息,适合处理大规模扫描数据的预处理优化。

点云侠的博客 631

(HDU 1664)Different Digits BFS + 数论 + 余数判重 详细题解

Different Digits Time Limit: 10000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1628 Accepted Submission(s): 470Problem Description Given a positive int

STILLxjy 705

C#上位机开发揭秘:从新手到大神的蜕变之路,代码实例全解析!

上位机通常是与硬件设备(如嵌入式系统、PLC、传感器等)进行通信的计算机程序。它的作用是通过某种通信协议(如串口、TCP/IP 等)向设备发送命令,并接收设备的反馈数据。上位机需要有一个图形用户界面(GUI)来展示数据或控制硬件设备。通过本篇教程,我们介绍了 C# 上位机开发的基本步骤,从串口通信的实现,到图形用户界面的构建,再到进阶功能的实现。作为上位机开发的新手,掌握这些基础知识是非常重要的。而随着经验的积累,你可以逐步尝试更复杂的功能,比如多线程处理、数据分析与存储等。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 4830

HDU 1664 Different Digits (数论 -- 鸽笼原理 + BFS搜索 + 余数判重)

大体题意: 给你一个数字n,让你找出它的一个倍数m,使得m中不同的数字尽可能的少,如果有多解,输出最小的一个! 思路: 肯定是搜索的题目,我们得先考虑数字m 不同数字的种类个数,以便缩小搜索范围。 这里巧妙的运用了鸽笼原理,举个简单的小例子来说明这个原理,如果让你选择一个月份的话,你选择13次肯定有两次是重复的,这个题目同样也是,我们选择n+1个数字,肯定有两个数对n取模是相同的。我们这样

aozil_yang的博客 574

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Different Digits HDU - 1664

Different Digits HDU - 1664

weixin_29216119的博客 768

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

hdu 1664 Different Digits (bfs+取余判重+数论知识)

Different Digits Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 382    Accepted Submission(s): 90 Problem Description Given a pos

To be what you what to be! 2433

hdu1664 Different Digits

同余、枚举

ACoder 244

HDU 1664 Different Digits

对于任意的整数n,必然存在一个由不多于两种数字来组成的n的倍数?

DotACM 1715

【hdu】1664 different digits【搜索+字符串处理】

题意: 找出给出数的倍数中组成数字最少的那个数,如果组成数字一样输出大小最小的那个数 题解: 刚看到的时候不知所措,根本不知道哪里可以剪枝,也不知道搜索到哪里为止。。。。 point1:该题用到了数论的知识:对于任意的整数n,必然存在一个由不多于两个的数来组成的一个倍数。所以先搜1个数的再搜2个数的就好 证明:因为 a , aa , aaa…… 取 n+1 个,则由鸽笼原理,必有两个模

a709743744的博客 525

hdu 1664 Different Digits 数位BFS(怎么都是这些题……

Description Given a positive integer n, your task is to find a positive integer m, which is a multiple of n, and that m contains the least number of different digits when represented in decimal. Fo

Key的博客 632

hdu Different Digits 1664

/* 题意:给你一个数n找到一个数先要保证这个数的元素最少,在保证元素最少的情况下,保证这个数最小,元素最少指的是, 111111就是一个元素,12222就是连个元素。 思路: 对于任意的整数 n ,必然存在一个由不多于两个的数来组成的一个倍数。 因为 a , aa , aaa…… 取 n+1 个, 则由鸽笼原理(抽屉原理),必有两个模 n 余数相同,相减即得 n 的倍数 m 。而 m

编程中快乐 571

【POJ 2283】 【HDU 1664】 Different Digits

Description Given a positive integer n, your task is to find a positive integer m, which is a multiple of n, and that m contains the least number of different digits when represented in decimal. Fo

HHH的专栏 705

(HDU1664)Different Digits-BFS-余数判重

Different Digits Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1789    Accepted Submission(s): 541   Problem Description Given a positive...

知乎:https://www.zhihu.com/column/c_1956128398884729528 221

hdu 1664 Different Digits(bfs+余数判重)

Problem Description Given a positive integer n, your task is to find a positive integer m, which is a multiple of n, and that m contains the least number of different digits when represented in dec

小张的专栏 742

HDU 1664 POJ 2283 Different Digits

感觉还是挺简单的一个bfs。。。但是尼玛的数论结论不知道啊。。。然后就无力了。。只有看大牛们怎么做的了 转载自http://m.blog.youkuaiyun.com/blog/u010228612/9715555 ps:一个数论中的结论:对于任意的整数n,必然存在一个由不多于两个的数来组成的一个倍数。因为a,aa,aaa……取n+1个,则必有两个模n余数相同,相减即得n的倍数

732

HDU 1664 Different Digits

题目链接~~> 做题感悟:                这道题是在学长讲完取余的方法后才做的,开始用的以前用的方法,结果超内存,然后用了 C++ 的 string 类后又超时,真无语!经过这一题,明显发现自己掌握的知识太少了。 题意:          给你一个 n ,让你找它的倍数,要有最少的不同的数字,如果不同的数字一样,输出数小的那个。 解题思路:              

Muti-Agent 1964

HDU1664 Different Digits(bfs +数论剪枝)

欢迎参加——每周六晚的BestCoder(有米!) Different Digits Time Limit: 10000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1129 Accepted Submission(s): 290Problem Descri

qwesde 1170
上一篇: BFS-hdu-1226-超级密码
下一篇: DFS-hdu-2821-Pusher
Accagain
博客等级 码龄14年 376粉丝 316原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值