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 循环数【数学】相关推荐

  1. 百练(十三~十六)题解

    百练(十三) Bailian2806 公共子序列[最长公共子序列+DP] - 海岛Blog - CSDN博客 Bailian3143 验证"歌德巴赫猜想"[筛选法]_海岛Blog- ...

  2. 求约瑟夫环问题最后胜利者的一般解法以及数学推导方法

    问题描述: 约瑟夫环问题(Josephus) 用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出.写出C程序. 解法一: 思路:建立一个有N个元素的循环链表,然后从链表表头遍 ...

  3. I00025 寻找循环数

    这个程序为<数学之美系列程序>之一. 这个问题是:找出所有n位数中的循环数. 一个n位数中的循环数是指该数乘以1到n之后,每位数字顺序发生移位,可以是移动若干位. 例如:142857是一个 ...

  4. 趣味程序之数学之美系列

    数学之美系列程序一览如下,点击进入博客文章: I00001 杨辉三角 I00003 贝尔三角形 I00004 贝尔三角形(解法二) I00020 计算卡特兰数函数 I00025 寻找循环数 I0002 ...

  5. 2023 “认证杯”数学中国数学建模C 题 心脏危险事件 详细思路

    2023年认证杯"数学中国数学建模如期开赛,本次比赛与妈杯,泰迪杯时间有点冲突.因此,个人精力有限,有些不可避免地错误欢迎大家指出.为了大家更方便的选题,我将为大家带来C题的详细解析,以方便 ...

  6. 约瑟夫环问题(数学方法)

    问题描述: 约瑟夫环问题(Josephus) 用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出.写出C程序. 解法一: 思路:建立一个有N个元素的循环链表,然后从链表表头遍 ...

  7. 十个漂亮的数学定理赏析

    原地址 十个漂亮的数学定理赏析 Beauty is the first test: there is no permanent place in the world for ugly mathemat ...

  8. 群论中的拉格朗日定理(子群的阶必然能整除群阶---数学

    前言:仅个人小记.本文记录的证明逻辑上不具有流畅性,主要是在一开始不流畅,拉格朗日神乎其技地引入了一个等价关系,进而实现了整个定理的证明,目前我没能给出拉格朗日是如何想到引入该等价关系. 最后给出推论 ...

  9. 通俗理解条件熵-数学

    就是决策树里面选划分属性用到的计算 条件熵越小表示划分之后各个集合越纯净 前面我们总结了信息熵的概念通俗理解信息熵 - 知乎专栏,这次我们来理解一下条件熵. 我们首先知道信息熵是考虑该随机变量的所有可 ...

最新文章

  1. 【Linux开发】V4L2应用程序框架
  2. CRM问题:导入、导出实体错误
  3. nacos 环境切换_Nacos多环境配置
  4. Android中对Log日志文件的分析
  5. android ImageSwitcher的使用
  6. cucumber jvm_用Cucumber JVM编写BDD测试
  7. iOS项目中常见定时器
  8. 自定义日志_Dubbo自定义日志拦截器源码分析
  9. oracle 时间函数
  10. Socket中常见的几个转换函数(htonl,htons,ntohl,ntohs,inet_addr,inet_ntoa)
  11. 前端知识 之 HTML
  12. 基于Servlet+jsp的web计算器
  13. Eclipse主题插件DevStyle修改Eclipse主题
  14. 写作技巧 - Markdown常用Emoji表情符号
  15. 电脑一启动吃鸡就重启计算机,玩吃鸡老是重启电脑
  16. 这可能是最完整的进藏攻略
  17. 【PyTorch基础教程2】自动求导机制(学不会来打我啊)
  18. 极简的书签管理器Shaarli
  19. signature=9584e09619c4aa010122e7ad7d4cb4c6,来用百度密语吧!!!
  20. 轻量级富文本(待优化)

热门文章

  1. 转: 中/英文资料 PKCS #11 函数列表
  2. [草稿]几款硬盘数据共享产品技术选型
  3. 一篇文章读懂开源web引擎Crosswalk
  4. 网络游戏中的数据包设计和定义(初论)
  5. 开源linux远程桌面,10分钟配置自己的vnc [linux远程桌面]
  6. kdj指标主要看哪个值_终于有人把KDJ指标总结全了,值得收藏
  7. 大数据学习之Hadoop任务输出到多个目录中
  8. Redis持久化-RDB
  9. 实现一个36进制的加法0-9,a-z
  10. 机器学习之监督学习(三)——支持向量机(SVM)