Bailian2952 循环数【数学】
2952:循环数
总时间限制: 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
问题链接:Bailian2952 循环数
问题描述:(略)
问题分析:
这个问题可以用模拟的方法来解决,但是计算量大一些。用数学计算的方法来解决,则比较简洁。
一个数如果乘以其位数加上1,结果为全9则为循环数,否则不为循环数。
这个问题与参考链接是同一个问题,只是输出结果形式略有不同。2个AC的程序改造了一下使用,结果一个AC,另外一个却WA了,非常郁闷。
程序说明:(略)
参考链接:UVALive2287 POJ1047 HDU1313 ZOJ1073 Round and Round We Go【大数+数学计算+水题】
题记:(略)
AC的C语言程序如下:
/* Bailian2952 循环数 */#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;
}
WA的C语言程序如下:
/* Bailian2952 循环数 */#include <stdio.h>
#include <string.h>#define BASE 10
#define N 60
char s[N + 1];
int a[N+10];int main(void)
{while(~scanf("%s", s)) {memset(a, 0, sizeof(a));int len = strlen(s);int k=0, left=0;int flag = 1;for(int i=len-1; i>=0; i--, k++) {int ans = (s[i] - '0') * (len + 1) + left;a[k] = ans % BASE;left = ans / BASE;if(a[k] != 9) {flag = 0;break;}}while(flag && left) {a[k] = left % BASE;left /= BASE;if(a[k] != 9) {flag = 0;break;}k++;}printf("%d\n", flag);}return 0;
}
Bailian2952 循环数【数学】相关推荐
- 百练(十三~十六)题解
百练(十三) Bailian2806 公共子序列[最长公共子序列+DP] - 海岛Blog - CSDN博客 Bailian3143 验证"歌德巴赫猜想"[筛选法]_海岛Blog- ...
- 求约瑟夫环问题最后胜利者的一般解法以及数学推导方法
问题描述: 约瑟夫环问题(Josephus) 用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出.写出C程序. 解法一: 思路:建立一个有N个元素的循环链表,然后从链表表头遍 ...
- I00025 寻找循环数
这个程序为<数学之美系列程序>之一. 这个问题是:找出所有n位数中的循环数. 一个n位数中的循环数是指该数乘以1到n之后,每位数字顺序发生移位,可以是移动若干位. 例如:142857是一个 ...
- 趣味程序之数学之美系列
数学之美系列程序一览如下,点击进入博客文章: I00001 杨辉三角 I00003 贝尔三角形 I00004 贝尔三角形(解法二) I00020 计算卡特兰数函数 I00025 寻找循环数 I0002 ...
- 2023 “认证杯”数学中国数学建模C 题 心脏危险事件 详细思路
2023年认证杯"数学中国数学建模如期开赛,本次比赛与妈杯,泰迪杯时间有点冲突.因此,个人精力有限,有些不可避免地错误欢迎大家指出.为了大家更方便的选题,我将为大家带来C题的详细解析,以方便 ...
- 约瑟夫环问题(数学方法)
问题描述: 约瑟夫环问题(Josephus) 用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出.写出C程序. 解法一: 思路:建立一个有N个元素的循环链表,然后从链表表头遍 ...
- 十个漂亮的数学定理赏析
原地址 十个漂亮的数学定理赏析 Beauty is the first test: there is no permanent place in the world for ugly mathemat ...
- 群论中的拉格朗日定理(子群的阶必然能整除群阶---数学
前言:仅个人小记.本文记录的证明逻辑上不具有流畅性,主要是在一开始不流畅,拉格朗日神乎其技地引入了一个等价关系,进而实现了整个定理的证明,目前我没能给出拉格朗日是如何想到引入该等价关系. 最后给出推论 ...
- 通俗理解条件熵-数学
就是决策树里面选划分属性用到的计算 条件熵越小表示划分之后各个集合越纯净 前面我们总结了信息熵的概念通俗理解信息熵 - 知乎专栏,这次我们来理解一下条件熵. 我们首先知道信息熵是考虑该随机变量的所有可 ...
最新文章
- 【Linux开发】V4L2应用程序框架
- CRM问题:导入、导出实体错误
- nacos 环境切换_Nacos多环境配置
- Android中对Log日志文件的分析
- android ImageSwitcher的使用
- cucumber jvm_用Cucumber JVM编写BDD测试
- iOS项目中常见定时器
- 自定义日志_Dubbo自定义日志拦截器源码分析
- oracle 时间函数
- Socket中常见的几个转换函数(htonl,htons,ntohl,ntohs,inet_addr,inet_ntoa)
- 前端知识 之 HTML
- 基于Servlet+jsp的web计算器
- Eclipse主题插件DevStyle修改Eclipse主题
- 写作技巧 - Markdown常用Emoji表情符号
- 电脑一启动吃鸡就重启计算机,玩吃鸡老是重启电脑
- 这可能是最完整的进藏攻略
- 【PyTorch基础教程2】自动求导机制(学不会来打我啊)
- 极简的书签管理器Shaarli
- signature=9584e09619c4aa010122e7ad7d4cb4c6,来用百度密语吧!!!
- 轻量级富文本(待优化)