POJ 2952 循环数

2022年12月青少年C/C++软件编程(二级)等级考试试卷及答案解析 若一个n位的数字串满足下述条件,则称其是循环数(cyclic):将这个数字串视为整数(可能带有前导0),并用任意一个 1 到 n 之间(包含1和n)的整数去乘它时, 会得到一个将原数字串首尾相接后,再在某处断开而得到的新数字串所对应的整数。后面按照病人登记的先后顺序,每行输入一个病人的信息,包括:一个长度小于10的字符串表示病人的ID(每个病人的ID各不相同且只含数字和字母),一个整数表示病人的年龄,中间用单个空格隔开。鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。 阅读详情
总时间限制:
1000ms
内存限制:
65536kB
描述

若一个n位的数字串满足下述条件,则称其是循环数(cyclic):将这个数字串视为整数(可能带有前导0),并用任意一个 1 到 n 之间(包含1和n)的整数去乘它时, 会得到一个将原数字串首尾相接后,再在某处断开而得到的新数字串所对应的整数。例如,数字 142857 是循环数,因为:
142857 *1 = 142857
142857 *2 = 285714
142857 *3 = 428571
142857 *4 = 571428
142857 *5 = 714285
142857 *6 = 857142。

请写一个程序判断给定的数是否是循环数。

注意:在此题中,输入数字串允许带前导0,且前导0不能被忽略,例如“01”是两位数字串,而“1”是一位数字串。但将数字串转化为整数做乘法运算或比较运算时,可以忽略前导0。

输入
一行,一个长度在 2 到 60 位之间的数字串。
输出
一个整数,若输入的数字串是循环数,输出1,否则输出0。
样例输入
142857
样例输出
1


来源
1047

思路

直接思路就是大整数乘法,再判断字符频次相不相等。

#include<iostream>
#include<cstring>
using namespace std;
struct BigInt {
	int bsize;
	int digit[10000];
	void init() {
		bsize = 0;
		for (int i = 0; i < 10000; ++i)digit[i] = 0;
	}
	void set(char str[]) {
		init();
		int L = strlen(str);
		for (int i = L - 1, c = 1, t = 0, j = 0; i >= 0; --i) {
			int x = str[i] - '0';
			t += x * c;
			c *= c;
			++j;
			if (j == 1 || i == 0) {
				digit[bsize++] = t;
				t = 0;
				c = 1; 
				j = 0;
			}
		}
	}
	BigInt operator * (const int x)const {
		BigInt ret;
		ret.init();
		int carry = 0;
		for (int i = 0; i < bsize; ++i) {
			int tmp = digit[i] * x + carry;
			ret.digit[ret.bsize++] = tmp % 10;
			carry = tmp / 10;
		}
		if (carry != 0) {
			ret.digit[ret.bsize++] = carry;
		}
		return ret;
	}
};



int main()
{
	char str[65];
	int source[10];
	int ans[10];
	while (~scanf("%s", str)) {
		BigInt num;
		num.set(str);
		int L = strlen(str);
		for (int j = 0; j < 10; ++j)source[j] = 0;
		for (int i = 0; i < L; ++i) {
			source[str[i]-'0'] ++;
		}

			bool flag = true;
		for (int i = 1; i <= L; ++i) {
			for (int j = 0; j < 10; ++j)ans[j] = 0;
			BigInt tmp = num * i;
			for (int j = 0; j < tmp.bsize; ++j) {
				ans[tmp.digit[j]]++;
			}
			for (int j = 0; j < 10; ++j) {
				if (source[j] != ans[j]) {
					flag = false;
					break;
				}
			}
			if (!flag) {
				break;
			}
		}
		if (flag)printf("1\n");
		else
		{
			printf("0\n");
		}

	}
	return 0;
}

看到网上有大佬说循环数的一个特点是乘位数+1等于9,代码如下

#include <stdio.h>
#include <string.h>

#define BASE 10
#define N 60
char s[N + 1];

int main()
{
    int len, i;

    while(~scanf("%s", s)) {
        len = strlen(s);

        int ans = 0, flag = 1;
        for(i = len - 1; i; i--) {
            ans += (s[i] - '0') * (len + 1);
            if(ans % BASE != 9) {flag = 0; break;}
            ans /= BASE;
        }
        if(flag) {
            len = (len + 1) / 2;
            for(i = 0; i < len; i++) {
                if(s[i] + s[i + len] - 2 * '0' != 9) {
                    flag = 0;
                    break;
                }
            }
        }

        printf("%d\n", flag);
    }

    return 0;
}

后半段不是很理解了。

循环数代码 n 位的一个整数是循环数(cyclic)的条件是:当用一个 1 到 n 之间的整数去乘它时, 会得到一个将原来的数首尾相接循环移动若干数字再在某处断开而得到的数字。也就是说,如果把原来的数字和新的数字都首尾相接,他们得到的环是相同的。只是两个数的起始数字不一定相同。例如,数字 142857 是循环数,因为: 142857 *1 = 142857 142857 *2 = 285714 142857 *3 = 428571 142857 *4 = 571428 142857 *5 = 714285 142857 *6 = 857142 立即下载

相关推荐

界面上下固定_基于ANSYS的胶粘结构界面开裂有限元计算

引言:目前工程上主要有螺栓,过盈,焊接和胶粘四种常用的连接方式,本文基于ANSYS Workbench环境,引入内聚力模型来实现对胶粘结构界面开裂失效的计算,文中的界面失效参数为随意给定,不是工程实际测试数据,仅起到演示作用!1.问题的描述如图所示给出了胶粘结构的三维模型,该胶粘结构由上下钢板组成,中间通过胶粘接到一起。(胶不需要建模,其影响主要通过内聚力模型实现)上下板的材料为结构钢,...

weixin_29473667的博客 1万+

OpenJudge NOI 1.13 06:循环数

【题目链接】 OpenJudge NOI 1.13 06:循环数 【题目考点】 1. 字符串 2. 枚举 3. 高精度计算 高精乘低精 【解题思路】 用string类对象保存输入的数字,该数字为一个高精度数字。 完成高精乘低精函数mult,实现该string类对象表示的数字乘以一个int类型的整数,结果为string类对象。 完成函数isSame,传入两个字符串st,s,判断这两个数字字符串是否循环相等。 字符串s首尾相接再从某处断开,断开点可以是当前字符串的下标i的位置,原字符串下标0~i-1为子串s1

君义NOIP的博客 1444

如何构建高质量的 QA 问答知识库

NLP 技术落地最普遍的场景就是智能客服,如阿里的”小蜜“,京东的“JIMI”等等。NLP 技术也广泛应用于搜索系统。无论是“智能客服”,还是“搜索系统”,构建的前提是拥有“高质量的QA知识库”。今天聊聊“如何构建高质量QA知识库。”。 历史对话数据分布分析 基于公司现有系统积累的大规模对话文本数据,需要对文本数据进行归类处理,分析每个部分数据的占比,挖掘出有价值的文本通过 NLP 相关技术进行商业价值转化。下文以医疗领域来举例说明,通过输入对象,可以将文本分为客服输入和用户输入两部分。挖掘相关问题,主要从

Jiassheng的博客 2151

06:循环数

06:循环数 总时间限制: 1000ms 内存限制: 65536kB 描述 若一个n位的数字串满足下述条件,则称其是循环数(cyclic):将这个数字串视为整数(可能带有前导0),并用任意一个 1 到 n 之间(包含1和n)的整数去乘它时, 会得到一个将原数字串首尾相接后,再在某处断开而得到的新数字串所对应的整数。例如,数字 142857 是循环数,因为: 142857 *1 = 1428

Fool.晨的博客 8855

【东华大学oj】找到最大数(一维数组->中等)

一天,老师布置了一个作业,要求对一串数字各不相同的数字串进行排序,大的在前,小的在后。接着,我从数字串中的第二个数字开始往后找,找到最大的一个,然后与第二个数字交换,这样的话我就能够确定排序后数字串中的第二个数字;明明研究发现,他的这个想法中最重要的一环就是在一串数字中找到最大的那个,然后与第一个数字交换,可是明明毕竟刚刚开始学习程序设计不久,无法写出较复杂的程序,所以明明想让你这位程序设计专家帮他的忙,帮助他把这段核心程序写出来,然后明明只需模仿着写就可以了。时间限制: 1S类别: 一维数组->中等。

的博客 523

配置 NVIDIA RTX 5090 + sm_120 + flashattention,已跑通一个大模型 ~~

本文介绍了在Ubuntu 22.04系统下为NVIDIA RTX 50系显卡搭建深度学习环境的完整流程。重点包括:1)安装适配50系显卡(sm_120架构)的CUDA 12.9驱动和Toolkit,需注意禁用系统自带驱动;2)配置环境变量解决nvcc命令识别问题;3)通过源码编译方式安装支持sm_120的PyTorch nightly版本(cu129),解决官方二进制包不兼容问题。整个过程涉及显卡驱动安装、CUDA环境配置、PyTorch适配等关键步骤,并提供了详细的验证方法和常见问题解决方案。文中特别强调

qq_36674060的博客 6156

06:循环数

总时间限制: 1000ms 内存限制: 65536kB 描述 若一个n位的数字串满足下述条件,则称其是循环数(cyclic):将这个数字串视为整数(可能带有前导0),并用任意一个 1 到 n 之间(包含1和n)的整数去乘它时, 会得到一个将原数字串首尾相接后,再在某处断开而得到的新数字串所对应的整数。例如,数字 142857 是循环数,因为: 142857 *1 = 142857 142857 *...

weixin_44437496的博客 1567

遗传算法解整数规划IntCon

x = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon) IntCon就是代表整数的参量,描述的是哪几个自变量是0-1整数变量。比如navrs设置有4个变量,设置IntCon为[2 3],代表第2和第3个变量是整数。 再比如设置IntCon=2:2:nvars,代表偶数项的变量是整数。 值得注意的是一旦设置了非空的IntCon,则Aeqandbeqmust be an empty entry ([]), andnonlconmust re...

jianti9962的博客 9220

循环数

循环数 描述 若一个n位的数字串满足下述条件,则称其是循环数(cyclic):将这个数字串视为整数(可能带有前导0),并用任意一个 1 到 n 之间(包含1和n)的整数去乘它时, 会得到一个将原数字串首尾相接后,再在某处断开而得到的新数字串所对应的整数。 注意,是原数字串首尾相接,所以说如果是“01”串,就应该看结果里面有没有“0101”串的子串(是这样的吗orz…) 例如,数字 142857 是...

huiduu的博客 4294

PrimeTime生成.lib竟暗藏PG添加Bug

1. 确认原始库中是否包含PG引脚的定义。2. 查阅PrimeTime的write_lib命令文档,寻找相关选项。3. 在生成库时使用正确的选项,例如-include_pg_pins或类似参数。4. 验证生成的.lib文件是否包含pg_pin部分。

limanjihe的专栏 1919

OpenClaw 从新手到中级完整教程【完整 持续更新版】

OpenClaw(曾用名 ClawdBot/Moltbot)是 2026 年最火的开源 AI Agent 项目,GitHub 已获得超过 68,000 星标。它不是普通的聊天机器人,而是一个真正能够执行任务的个人 AI 助理。

FeelTouch Labs 3113

poj循环数

http://poj.grids.cn/problem/2952/题目较为简单 我就不解释了 #includeusing namespace std;int len=0;bool add(int a[],char b[],int v2[],int v1[]){ for(int i=len-1;i>=0;i--) { a[i]+=b[i]-0; if(

l2ice的专栏 605

ElectrolyteGPT:首个电池电解液逆向设计的生成式 AI 系统 —— 算法原理与复现解析

数据驱动的重要性:1100 万→100 万的精心筛选,比单纯增大模型更有效领域适配:fLine 表示法、正则分词、化学感知的数据增强(SMILES randomization)都是关键小模型的力量:6M 参数在特定化学空间的表现,远超通用大模型在相同任务上的零样本能力条件生成的极限:10 维条件导致模型崩溃,提示我们需要更好的条件编码策略(如 diffusion guidance、RLHF-style 偏好优化)未来方向配方实验验证。

ASKCOS博客 122

OpenJudge百炼-2952-循环数 & poj-1047-Round and Round We Go-C语言-高精度计算

OpenJudge百炼-2952-循环数,挺好的一道题就这么废了,判断乘二就可以了 描述: 若一个n位的数字串满足下述条件,则称其是循环数(cyclic):将这个数字串视为整数(可能带有前导0),并用任意一个 1 到 n 之间(包含1和n)的整数去乘它时, 会得到一个将原数字串首尾相接后,再在某处断开而得到的新数字串所对应的整数。例如,数字 142857 是循环数,因为:  142857 *

OrdinaryCrazy的博客 1706

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Bailian2952 循环数【数学】

2952:循环数 总时间限制: 1000ms 内存限制: 65536kB 描述 若一个n位的数字串满足下述条件,则称其是循环数(cyclic):将这个数字串视为整数(可能带有前导0),并用任意一个 1 到 n 之间(包含1和n)的整数去乘它时, 会得到一个将原数字串首尾相接后,再在某处断开而得到的新数字串所对应的整数。例如,数字 142857 是循环数,因为: 142857 *1 = 142857...

海岛Blog 1185

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

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

编程基础之综合应用 C语言

参考学习,自己创写,然后代码参考部分已经标注出链接

Lukegood的博客 242

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

百练(十三~十六)题解

百练(十三) Bailian2806 公共子序列【最长公共子序列+DP】 - 海岛Blog - 优快云博客 百练(十四) Bailian2815 城堡问题【DFS】 - 海岛Blog - 优快云博客 Bailian1183 反正切函数的应用【迭代计算】 - 海岛Blog - 优快云博客 Bailian2748 全排列【全排列】(POJ NOI0202-1750) - 海岛Bl...

海岛Blog 781

【poj1047】循环数

模拟

Gvolv 2929

电子协会 C语言 2级 56 、循环数 (2020 真题)

例如,数字 142857 是循环数,因为: 142857 *1 = 142857 142857 *2 = 285714 142857。注意:在此题中,输入数字串允许带前导 0,且前导 0 不能被忽略,例如“01”是。两位数字串,而“1”是一位数字串。并用任意一个 1 到 n 之间(包含 1 和 n)的整数去乘它时,一个整数,若输入的数字串是循环数,输出 1,否则输出 0。一行,一个长度在 2 到 60 位之间的数字串。将这个数字串视为整数(可能带有前导 0),再在某处断开而得到的新数字串所对应的整数。

青少年趣味编程 1184

循环数题目讲解

若一个n位的数字串满足下述条件,则称其是循环数(cyclic):将这个数字串视为整数(可能带有前导0),并用任意一个 1 到 n 之间(包含1和n)的整数去乘它时, 会得到一个将原数字串首尾相接后,再在某处断开而得到的新数字串所对应的整数。例如,数字 142857 是循环数,因为:请写一个程序判断给定的数是否是循环数。注意:在此题中,输入数字串允许带前导0,且前导0不能被忽略,例如“01”是两位数字串,而“1”是一位数字串。

爱编程的鱼的博客 1532

NOI / 1.13编程基础之综合应用——06:循环数

NOI / 1.13编程基础之综合应用——06:循环数

dgyshy的博客 938

电子协会二级考试——循环数

并用任意一个 1 到 n 之间(包含1和n)的整数去乘它时, 会得到一个将原数字串首尾相接后,再在某处断开而。若一个n位的数字串满足下述条件,则称其是循环数(cyclic):将这个数字串视为整数(可能带有前导0),注意:在此题中,输入数字串允许带前导0,且前导0不能被忽略,例如“01”是两位数字串,而“1”是一位数字。得到的新数字串所对应的整数。但将数字串转化为整数做乘法运算或比较运算时,可以忽略前导0。请写一个程序判断给定的数是否是循环数。

cici_happy_的博客 467

电子学会等级考试二级:循环数

注:编程语言标准std:C++11bool check(int a,string b)//判断是否是子串b+=b;=b.npos;cin>>n;//字符串转整形i<=len;i++)y=x*i;count++;cout<<1;return 0;

u014117969的博客 1762
上一篇: POJ 2764 数根
下一篇: POJ 2737_大整数除法
softwareX4
博客等级 码龄9年 21粉丝 63原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值