usaco2.2 runround

runround循环C++源程序 循环数是那些不包括0且没有重复数字的整数(比如81362)并且还应同时具有一个有趣的性质, 就像这个例子:如果你从最左边的数字开始(在这个例子中是8)向右数最左边这个数(如果数到了最右边就回到最左边),你会停止在另一个新的数字(如果停在一个相同的数字上,这个数就不是循环数).就像: 8 1 3 6 2 从最左边接下去数8个数字: 1 3 6 2 8 1 3 6 所以下一个数字是6重复这样做 (这次从“6”开始数6个数字) 并且你会停止在一个新的数字上: 2 8 1 3 6 2, 也就是2再这样做 (这次数两个): 8 1再一次 (这次一个): 3 又一次: 6 2 8 这时你回到了起点,在经过每个数字一次后回到起点的就是循环数。如果你经过每一个数字一次以后没有回到起点, 你的数字不是一个循环数。给你一个数字 M (在1到9位之间), 找出第一个比 M大的循环数, 输出数据保证结果能用一个无符号长整型数装下。 立即下载

题目链接


要求输出下一个 runaround number (定义见原题)


思路很简单,就是 枚举 并 判断,因为判断是否为 runaround number 是常数时间,然后可能枚举的范围也并不特别大,所以可行。


但是,还是可以做一点点小小优化的

记这个数的长度为 len, 根据 runaround number 的定义,我们注意到

1)len 这个 digit 不可能出现在 runaround number 中。因为一旦碰到它,下一次还是它。

2)runaround number 各个位上数字的总和 sum % len == 0。 这样才能满足每个数字遇到一次,又回到最初的数字。


顺带再提一下 数字 与 字符串 的转化,用了 istringstream 和 ostringstream


AC代码如下:


/*
PROB: runround
LANG: C++
ID: fan_0111
*/
#include <iostream>
#include <cstdio>
#include <sstream>
#include <string>
#include <cstring>
using namespace std;
typedef long long LL;
int toInt(string& s) {
	istringstream in(s);
	int x;
	in >> x;
	return x;
}
string toString(int x) {
	ostringstream out;
	out << x;
	return out.str();
}
bool check(LL x) {
	string s = toString(x);
	int len = s.length();
	bool exist[10] = {0};
	for (int i = 0; i < len; ++i) {
		if (s[i] == len || s[i] == '0') return false;
		if (exist[s[i]-'0'])          return false;
		exist[s[i]-'0'] = true;
	}
	
	memset(exist, 0, sizeof(exist));
	int sum = 0;
	for (int i = 0; i < len; ++i) sum += s[i] - '0';
	if (sum % len) return false;
	
	int p = 0, tot = 1;
	exist[s[0]-'0'] = true;
	while (true) {
		if (tot == len) return true;
		p = (p+s[p]-'0') % len;
		if (exist[s[p]-'0']) return false;
		++tot;
		exist[s[p]-'0'] = true;
	}
}
int main() {
	freopen("runround.in", "r", stdin);
	freopen("runround.out", "w", stdout);
	string s;
	cin >> s;
	int num = toInt(s);
	for (LL i = num+1;; ++i) {
		if (check(i)) {
			cout << i << endl;
			break;
		}
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}


后来看了 ANALYSIS,有一种解法是递归地生成 各数位digit不同的 数,然后判断是否满足 runaround number 的其他定义,也可以。

Pytorch入门实战(2)-使用BP神经网络实现MNIST手写数字识别 上一篇:Pytorch入门实战(1) - 实现线性回归 涉及知识点 Pytorch nn.Module的基本使用 Pytorch nn.Linear的基本用法 PytorchVision Transforms的基本使用 Pytorch中DataLoader的基本用法 Pytorch详解NLLLoss和CrossEntropyLoss 如何确定神经网络的层数和隐藏层神经元数量 本文内容 本文将会使用BP神经网络(就是最普通的神经网络)实现一个MNIST手写数据集的实现。话不多说,直接开始。 首先先导入需要的包 阅读详情

相关推荐

封神台靶场,为了小芳,冲之——cookie注入

第二个靶场 打开网站 找一下注入点 一般在新闻这种里面点开看看 先判断是否存在注入 有waf 尝试了很多方法绕过都没成功,/and/,aandnd,AnD等一系列都没绕过去,乌鸡鲅鱼 删掉id=169 发现 然后判断cookie注入 在搜索框输入 Javascript:alert(document.cookie=”id=”+escape(‘169’)); 然后弹窗了(其中 “id=” 取决URL中的id= escape中的数值也是URL中id=的值)返回刚刚的页面,把ID删除后一样能正常显示。说明服务器能

Wubuqing的博客 654

usaco——runround

 Runaround NumbersRunaround numbers are integers with unique digits, none of which is zero (e.g., 81362) that also have an interesting property, exemplified by this demonstration: If you start a

coder notebook 615

LobeHub开源AI应用平台:从部署到定制的全栈实践指南

在现代AI应用开发领域,大语言模型(LLM)的集成与部署是核心技术挑战之一。其原理在于通过API或本地化部署,将预训练模型的强大能力封装为可调用的服务。这项技术的核心价值在于极大地降低了AI应用的开发门槛,使开发者能够快速构建智能对话、内容生成等场景的应用。随着模型即服务(MaaS)模式的普及,一个关键痛点是如何高效地管理多模型、设计友好的用户界面并实现功能扩展。这正是开源项目LobeHub所聚焦的领域,它通过提供可插拔的架构和配置驱动的低代码理念,解决了AI能力落地的“最后一公里”问题。本文将结合Dock

weixin_27210125的博客 756

usaco 2.2.3 runround

/* ID: cm750621 PROG: runround LANG: C++ */ #include bool vis[20],tmp[10]; char s[20]; int a[459] = {0,1,2,3,4,5,6,7,8,9,13,15,17,19,31,35,37,39,51,53,57,59,71,73,75,79,91,93,95,97,147,174,258,285,417

Free loop! 爱上编程! 717

深入解析安卓性能分析工具systrace/atrace的使用技巧与实战场景

本文深入解析了安卓性能分析工具systrace/atrace的核心使用技巧与实战场景。文章澄清了环境搭建的常见误区,详细拆解了命令参数,并通过列表卡顿、启动优化等具体案例,手把手指导开发者利用这些工具精准定位性能瓶颈,提升应用流畅度。

yyy34的博客 240

eQTL:连接突变与基因表达的桥梁

欢迎关注”生信修炼手册”!在高等生物中,很多的重要性状都为数量形状,比如农作物的产量,人类复杂疾病(高血液,糖尿病)等等。对于这些数量性状而言,往往受到多个基因的调控作用。为了更好的开展...

庐州月光的博客 7070

USACO runround

/* ID: fairyroad TASK: runround LANG: C++ */ #include #include #include using namespace std; ifstream fin("runround.in"); ofstream fout("run

左手为你画情 2425

OpenCV简单应用:图像模糊处理

OpenCV是一个广泛使用的开源计算机视觉库,提供了丰富的图像处理和计算机视觉算法。本文将介绍如何使用OpenCV对图像进行模糊处理,并提供相应的源代码。该函数接受两个参数:第一个参数是输入图像,第二个参数是指定模糊核大小的元组。在这个例子中,我们使用了一个5x5的模糊核。您可以尝试不同大小的模糊核,以获得不同程度的模糊效果。函数和指定不同大小的模糊核,我们可以实现不同程度的模糊效果。该函数接受两个参数:第一个参数是窗口的名称,第二个参数是要显示的图像。在上面的代码中,我们首先使用。要运行上述代码,请将。

MwgmPhilosophy的博客 290

USACO 2.2 集合 Subset Sums

集合 题目描述 对于从1到N (1 {3} 和 {1,2} 这是唯一一种分法(交换集合位置被认为是同一种划分方案,因此不会增加划分方案总数) 如果N=7,有四种方法能划分集合{1,2,3,4,5,6,7},每一种分法的子集合各数字和是相等的: {1,6,7} 和 {2,3,4,5} {注 1+6+7=2+3+4+5} {2,5,7} 和 {1,3,4,6} {3

闲人请进 1086

CPU 访问外设的两种核心机制:MMIO(Memory-Mapped I/O) 和 DMA(Direct Memory Access)

BAR和DMA是计算机系统中两种关键的数据传输机制:BAR(基址寄存器)用于CPU与设备间的控制通信,映射设备寄存器便于配置操作;而DMA(直接内存访问)允许设备直接读写系统内存,无需CPU参与大量数据传输。典型场景如NVMe SSD读取数据时,CPU通过BAR下发指令,设备通过DMA高效传输数据到主机内存,最后中断通知CPU。虽然BAR能映射大内存空间,但仍无法替代DMA的高效数据传输功能,两者各司其职——BAR负责控制,DMA专注数据传输,共同实现高性能的硬件交互。

MHD0815的博客 237

基于 ESP32 的智能药盒提醒装置设计与实现

本装置基于 ESP32 实现了智能药盒的核心功能,硬件选型兼顾成本与实用性,软件设计模块化、易拓展。后续可通过 ESP32 的 WiFi 模块接入物联网平台(如阿里云、OneNet),实现远程设置提醒、服药状态反馈等功能,进一步提升智能化水平。该装置能有效解决老人忘服药问题,具有较高的实用价值与推广潜力。

weixin_42300449的博客 1045

USACO 2.2 Runaround Numbers (runround)

//Main Idea //First check whether the digits are unique //then check the runround property; /* ID: haolink1 PROG: runround LANG: C++ */ //#include #include using namespace std; typedef unsigned

Hello World! 1024

【OTFS与信号处理:论文阅读4】OTFS时延多普勒域嵌入导频辅助信道估计(已更新)

【OTFS与信号处理:论文阅读】Embedded Pilot-Aided Channel Estimation for OTFS in Delay–Doppler Channel(快来看看OTFS嵌入式导频设计的经典之作!!!)

Cuby的博客 5336

usaco 2.2 runround 2008.6.20

usaco 2.2 runround 2008.6.20 {简单的模拟,循环不要错了即可} { ID: PROG: runround LANG: PASCAL } program p_runround; const r:array['1'..'9']oflongint=(1,2,3,4,5,6,7,8,9); var   f1,f2:text;    a:array['0'

Batman_的博客 496

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

USACO 2.2 Runaround Numbers(runround)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33935505的博客 170

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

usaco 2.2 runround...

/* ID:chenjiong PROG:runround LANG:C++ */ #include <stdio.h> #include <string.h> int val[9]; int cnt; int vis[10]; void write(unsigned int x) { if ( x...

weixin_30265103的博客 134

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

USACO2.2.3 Runaround Numbers (runround)

枚举比m高的数。先判断是否合法,再判断是不是循环数。用vis数组判重,没什么技术含量。 /* ID:shijiey1 PROG:runround LANG:C++ */ #include #include #include #include #include using namespace std; long long n; bool isNum() { int vis[80]

Shion的专栏 464

usaco 2.2.3(runround)

题目: Runaround Numbers Runaround numbers are integers with unique digits, none of which is zero (e.g., 81362) that also have an interesting property, exemplified by this demonstration: If you star...

weixin_30565327的博客 123

USACO 2.2.3 [Runaround Numbers] (runround)

算法:模拟 又是一道模拟题,找离给出的数最近的循环数。 因为不能出现0而且不能重复,所以我们转换成字符串然后开一个bb数组记录一下,判断的时候也用一个b数组记录一下,把走过的位置标记一下,如果找到某个位置已走过,查看是不是起点,若不是就退出再往下试。 { ID:1011ma

227

USACO 2.2 Runaround Numbers

这又是我想吐槽难度差的一道题……也有可能是我想得太简单了…… 大致上就是暴力穷举,每个数字检查两个条件: 1. 每位数字是否不重复 2. 能否满足runround的条件,也就是从第1位开始,向后移该位数字的位数,如果循环一圈之后发现每位数字都经过了,那么就满足条件

云雀的工作本 608

【USACO 2.2】Runaround Numbers

找出第一个大于n的数满足:每一位上的数都不同,且没有0,第一位开始每次前进当前这位上的数那么多位,超过总位数就回到开头继续往前进,最后能不能每个位都到过一次且回到第一位,$n<10^9$。 暴力,每次n++后模拟一边判断是否符合条件。 /* TASK:runround LANG:C++ */ #include<cstdio> #include<c...

dingguayi7025的博客 207

USACO Training Section 2.2 Runaround Numbers

[url="http://ace.delos.com/usacoprob2?a=3nbwNTZTBNm&S=runround"]英文原题[/url] [url="http://www.wzoi.org/usaco/12%5C205.asp"]中文题译[/url] 相当简单的逐个查找是否满足要求的数,注意题目里说数字是唯一的。 [code="C++"] /* ID: black...

山中竹笋 195

USACO_2_2_Runaround Numbers

没有用到什么特别的方法,从M+1开始一个一个的枚举 Code /**//* ID:sdjllyh1 PROG:runround LANG:JAVA completedate:2008/12/14 author:LiuYongHuiFromGuiZhouUniversityOfChina morearticle:www.cnblogs.com/s...

weixin_30920091的博客 156

USACO runaround

/* ID:kevin_s1 PROG:runround LANG:C++ */ #include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;string&gt; #include &lt;cstring&gt; #include &lt;vector&gt; #include &lt;map&gt; #include &...

weixin_33912445的博客 106

usaco-2.2-runaround-pass

这个题意,呵呵,要理解清楚: /* ID: qq104801 LANG: C++ TASK: runround */ #include <iostream> #include <fstream> #include <cstring> #include <vector> #include <cstdio> #i...

weixin_30654419的博客 104

usaco2.23Runaround Numbers

题意看了N久,判断是不是什么循环数 ,符合它的规定就行,模拟 /* ID: your_id_here PROG: runround LANG: C++ */ #include #include #include #include #include using namespace std; long long n; int judge(long long x) {

shangyu11的专栏 309
上一篇: usaco2.2 subset 01背包
下一篇: usaco2.2 lamps
kkkkahlua
博客等级 码龄12年 4粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值